Skip to main content Help Control Panel

Login   A+   A-

Community «   Le forum «   Nouvelles fonctions «  

Ajout d'une nouvelle option dans les options avancées des articles

Posted by Nuxwin on Mar. 24, edited by Bernard on Mar. 26, (popular)  
***** 5 rates

Tags: options avancées article flash

avatar
nuxwin
En directe de Caen

Bonjour ;

Lorsqu'on a activé l'option "Lister les pages récentes dans un objet Flash dynamique et cliquable" dans le panneau de configuration de la page d'accueil, tous les articles récents sont lister via flash (ce qui est normal puisque c'est le but recherché)".

Ce faisant, je pense qu'une option devrait être ajoutée dans les options avancées des articles pour permettre aux associés ou éditeur d'interdir le listage de tel ou tel article via flash soit une option no_flash.

Pourquoi une telle demande ?

Le listage via flash permet de mettre en évidence les articles récents mais liste aussi toutes les requêtes des utilisateurs puisque celles-ci sont considérées comme des articles.

Cela sous-entend donc que n'importe quel article avec un titre plus ou moins significatif, peut être listé et apparaître en page d'accueil, page la plus importante d'un site. Imaginez l'effet si le titre de la requête est une insulte dédiée aux administrateurs du site...

En ce qui concerne les requetes, c'est une option no_flash pour la section entière qui devrait être ajoutée.

Merci.
LeToto
Member
142 posts
registered on June 29 2007

on Mar. 24


    +1.

Christian
avatar
from chonas l'amballan
Member
603 posts
registered on Mar. 23 2006

on Mar. 24


+1 également


http://actupro.fr
ThierryP
avatar
from Nice, Drap
Associate
1026 posts
registered on Feb. 22 2006

on Mar. 24


Sans conteste ,+1 C'est même fou que personne n'y ai pensé avant !


SEO et webmastering VDP-Digital - Skins pour Yacs : YordPress 5.3 - Bonbon Skin 1.1
Agnès
avatar
from le Grésivaudan (grenoble-chambéry)
Associate
1926 posts
registered on Feb. 13 2006

on Mar. 24


En dehors de toute question de vote, il y a quand même quelque chose qui me chagrine. Je ne peux pas faire le test, parce que je n'ai pas le module-qui-va-bien d'installé pour utiliser cette fonction. Mais voilà :
  • dans mon idée, les articles listés dans l'objet flash ne sont pas différents de ceux autorisés à s'afficher sur la page d'accueil. dites-moi si je me trompe - faut bien que Yacs aille chercher les informations quelque part.
  • si le début est juste, alors que viennent faire ici les requêtes, lesquelles ne sont visibles que par les associés ?
As-tu vérifié si tu voyais les mêmes articles - et surtout les requêtes - en étant simple visiteur ? éventuellement, vider les caches...

Tes requêtes sont-elles bien invisibles à d'autres que les associés et leurs auteurs ?

Encore une fois, ceci est basé sur l'idée que ce qui est listé en flash n'est autre que ce qui est visible sur la page d'accueil - ou au pire, ce qui est visible publiquement tout court, même si c'est pas sur la page d'accueil d'ailleurs. En aucun cas ça n'est sensé rendre visible ce qui ne l'est pas.

Et si c'est bien le cas, alors il existe déjà un moyen simple de ne pas lister un article dans l'objet flash : ne pas le rendre lisible à tous et/ou ne pas l'afficher sur la page d'accueil - je sais pas quelle est la bonne option.

Il y a peut-être bien une amélioration à faire, mais avant, on peut vérifier toutes les pistes actuelles ?


Agnès
Il n'y a pas de problèmes, que des solutions.
Nuxwin
avatar
from Caen, devant mon bureau
Member
190 posts
registered on June 9 2006

on Mar. 25


Bonjour Agnes ;

Je vais tenter de te répondre selon les testes que j'ai pu effectuer ( Je m'excuse d'avance pour la longueur du post).

" - dans mon idée, les articles listés dans l'objet flash ne sont pas différents de ceux autorisés à s'afficher sur la page d'accueil. dites-moi si je me trompe - faut bien que Yacs aille chercher les informations quelque part. "


Logiquement, ce devrait être le cas, ce faisant un autre exemple que celui des requêtes avant d'y revenir pour bien mettre en évidence le problème évoqué ici :

Pour tester le comportement, j'ai créé un nouvelle article ( devant être visible par tout le monde ) et dans ses options avancées, j'ai bien coché l'option : 'n'est pas affichée sur la page d'accueil'.

Via panneau de contrôl, j'ai coché l'option : 'Recalculer tous les éléments de pages', j'ai purgé le cache, je me suis déconnecté, j'ai vidé le cache de mon navigateur, je l'ai fermé et ré-ouvert.

Résultat : En tant que simple surfer, mon nouvel article, bien que ne devant pas apparaître sur la page d'accueil, a continué d'être listé dans l'objet flash. Par contre, il n'a plus été mis en avant en tant qu'article sur la page d'accueil.

Cela sous-entend donc bien qu'un associé ou éditeur n'a pas la main sur les articles qui doivent êtres ou non listés dans l'objet flash et que l'option 'n'est pas affichée sur la page d'accueil' n'a aucun effet sur cet objet.

" - si le début est juste, alors que viennent faire ici les requêtes, lesquelles ne sont visibles que par les associés ?

As-tu vérifié si tu voyais les mêmes articles - et surtout les requêtes - en étant simple visiteur ? éventuellement, vider les caches... "


En ce qui concerne les requêtes, voici mes observations :

Sur la carte du site, lorsque je suis connecté en tant qu'associé, j'ai deux sections qui concernent les requêtes soit :
  • une section nommée 'Requêtes' ;
et
  • une section nommée 'Requêtes traitées' ;


En ce qui concerne la première ( celle qui me pose problème ), voici ses permissions actuels :
  • N'apparaît pas sur la carte du site, sauf pour les associés avec les autres sections spéciales
  • Options pour la page d'index :
- Options de rendu --> locked ( je sais pas vraiment à quoi ça correspond ça...)
  • Apparence sur la carte du site :
- listée avec les autres sections spéciales, seulement pour les associés, n'apparaît jamais sur la page d'accueil.
  • Contribution à la page d'accueil
- ne sont pas affichées sur la page d'accueil
  • Options pour le contenu de cette section
Rien de particulier ici
  • Options avancées
- Surnom --> queries

- visibilité --> Tout le monde peut lire cette section

- Verrouillage --> Non - Les contributions sont acceptées

" Tes requêtes sont-elles bien invisibles à d'autres que les associés et leurs auteurs ? "


Alors, dans les options de cette section, et suite à ta question, j'ai tilté sur celles-ci :

- visibilité --> Tout le monde peut lire cette section

- Verrouillage --> Non - Les contributions sont acceptées

que j'ai donc modifié comme ceci :

- visibilité --> Accès restreint aux associés et éditeurs

- Verrouillage --> Oui - Seuls les associés et les éditeurs peuvent modifier le contenu Suite à cela, je me suis déconnecté et j'ai, en tant que surfer, posté une nouvelle requête. Après avoir posté, yacs ma donnée un lien spécifique ( http://www.nuxwin.com/users/login.php/WyJlZGl0IiwiYXJ0aWNsZToxMzgiLCIxNzQwNzM3NjYzIl0%3D ) pour que je puisse suivre l'avancement de ma requête).

Cette requête n'a effectivement pas était listée dans l'objet flash mais toutefois, lorsque je me suis re-connecté en tant qu'associé, elle a bien été listée.

Ceci règle donc partiellement mon problème puisque désormais, les requêtes ne sont plus listées dans l'objet flash pour les simple surfers.

Ce faisant, je persiste à dire que si un article fait partie d'une section dont les enfants ne doivent pas apparaîtres sur la page d'accueil, soit l'option 'ne sont pas affichées sur la page d'accueil', il ne devrait jamais êtres listés dans l'objet flash, ce quelque soit le contexte de navigation (surfer, associé, editeur...).

En effet, actuellement il existe seulement deux solutions pour empêcher un article d'être listé dans l'objet flash :
  • De manière globale en restreignant la visibilité d'une section aux seuls associés et éditeurs ;
  • De manière unitaire en restreignant la visibilité d'un article aux seuls associés et éditeurs.


Ici, on retiendra notamment que l'option : 'ne sont pas affichées sur la page d'accueil' n'a aucun effet sur les articles listé dans l'objet flash.

Or, ceci pose problème dans bien des cas.

Pour exemple, j'ai re-créé les sections et "articles par défaut" notamment la section 'chaine' qui contient l'espace de discussion en ligne nommé 'machine à café'.

On est bien d'accord que la section 'chaine' ainsi que ses 'articles', notamment 'machine à café" doivent êtres visibles à tous le monde. Et bien, ici, même si on indique l'option 'ne sont pas affichées sur la page d'accueil' pour la section ou encore 'n'est pas affichée sur la page d'accueil' pour l'article lui-même, celui-ci continu d'être listé dans l'objet flash.

Conclusion :

L'associé n'a pas la main sur les articles qui doivent être ou non listés dans l'objet flash et une nouvelle option 'no_flash' pour les options des sections ( application globale ) et pour les options des articles ( application unitaire ) serait donc la bienvenue.

J'espère avoir répondu à tes questions.
Nuxwin
avatar
from Caen, devant mon bureau
Member
190 posts
registered on June 9 2006

on Mar. 25


Edit :

Après avoir mis les mains dans le code de yacs, et plus particulièrement la partie qui permet de lister les articles qui doivent être affichés dans l'objet flash, voici mes observations ainsi qu'un solution d'attente que je soumets pour ceux que cela intéresse.

Le mieux serait de rajouter une option spécifique 'no_flash' dans les options des sections et articles mais dans l'immédiat, la méthode que je propose se cantonne à interdir le listage d'un article dans l'objet flash si les conditions suivantes sont réunies :

L'article est paramétré avec l'option 'Options avancées' --> 'n'est pas affichée sur la page d'accueil'

Note : ( soit une valeur autre que 'main' pour le champ home_panel de la table yacs_articles pour l'article concerné )

ou encore :

L'article est paramétré avec l'option 'Options avancées' --> 'affichée normalement, en fonction des paramètres de la section' et que la section parente, c'est à dire, celle qui contient l'article, est paramétrée avec l'option 'Contribution à la page d'accueil' --> 'ne sont pas affichées sur la page d'accueil'

Note : ( Soit une valeur autre que 'main' pour le champ home_panel de la table yacs_sections pour la section concernée. ).

Pour décrire la méthode proposée, je remonte l'analyse que j'ai effectué :

L'objet flash est géré par le script ./feeds/slashdot.php

Ce script fait appel à la méthode Feeds::get_local_news de la class Feeds situées dans le script ./feeds/feeds.php :

Fichier ./feeds/slashdot.php : Appel de la méthode get_local_news :
if(!$items Feeds::get_local_news(20'compact'))
    return;



Fichier feeds/feeds.php - Méthode get_local_news :
function get_local_news($count=20$variant='feeds') {
        global 
$context;

        
// list the newest published articles
        
return Articles::list_by_date(0$count$variant);

    }



Cette méthode get_local_news fait elle-même appelle à la méthode list_by_date de la class Articles située dans le script ./articles/articles.php.

Fichier ./articles/articles.php - Méthode list_by_date :
function &list_by_date($offset=0$count=10$layout='full'$since=NULL) {
        global 
$context;

        
// order by reverse date of publication
        
$result =& Articles::list_by('publication'$offset$count$layout,
    
$since);
        return 
$result;
    }



Dans la doc de cette méthode, il est clairement indiqué que :

* Only articles matching following criteria are returned:
..........
* - related section is regularly displayed at the front page


Donc, on est bien d'accord ( sauf si mon anglais me fait défaut ) que normalement, les articles sont seulement selectionnés si la section les contenant est affichée en première page.

Or, dans le cas présent, ce n'est pas le cas. En effet, le critère ne s'applique pas à l'objet flash. Ceci est clairement mis en évidence dans la méthode évoquée ci-après.

De plus, convient-il de préciser ( sauf encore si mon anglais fait défaut ) que la doc de la méthode ne précise pas le critère selon lequel les articles paramétrés avec l'option 'Options avancées' --> 'n'est pas affichée sur la page d'accueil' ne sont pas selectionnés.

Bref, ceci n'est pas très grave puisque dans la méthode évoquée ci-après, ce critère est clairement mis en évidence.

La méthode list_by_date de la classe Articles fait elle-même appelle à la méthode list_by de cette même classe.

La méthode list_by est celle qui construit la requête Sql à exécuter pour récupérer la liste des articles. Cette requête Sql est construite selon divers critères.

Dans le cas qui nous préoccupe, la partie du code qui nous intérresse est celle-ci :

function &list_by($order=NULL$offset=0$count=10$layout='full',
    
$since=NULL) {
..............
..............

        
// avoid articles pushed away from the front page
        
$sections_where '';
        if(isset(
$context['skin_variant']) && ($context['skin_variant'] ==
    
'home')) {
            
$sections_where .= " AND (sections.home_panel LIKE 'main')"
                
." AND (sections.index_map LIKE 'Y')"
                
." AND (articles.home_panel LIKE 'main')";
        }
        
.............
.............
}



Dans cette partie du code, un complément conditionnel pour la clause WHERE de la requête définie. Ce complément comprend les deux critères qui permettent d'écarter la selection des articles qui ne doivent pas êtres affichés sur la page d'accueil.

Nous voyons ici que la condition est ajoutée si, et seulement si la variable $context['skin_variant'] existe et qu'elle est positionnée à home, ce qui correspond bien à la page d'accueil.

Pour apporter les modification nécessaires, nous pourrions bien entendu étendre la condition (en ajoutant un elsif...) dans la méthode list_by mais comme ce qui nous préoccupe est l'ajout de critères de selection pour les articles devant êtres listés dans notre objet flash, autant positionner la variable $context['skin_variant'] à home --> directement dans le script gérant cet objet, soit le fichier ./feeds/slashdot.php.

Ainsi, pour arriver à nos fin, il nous suffit, dans le script ./feeds/slashdot.php, de rajouter cette ligne :

$context['skin_variant'] = 'home';



Soit le résultat final suivant :

Fichier ./feeds/slashdot.php après modifications :
........
........
// list fresh news
include_once '../feeds.php';

// Adding to prohibit the listing of items that should not appear on the
// home page
$context['skin_variant'] = 'home';

if(!
$items Feeds::get_local_news(20'compact'))
    return;
.........
.........



Voilà, une fois ceci fait, purger votre cache est vous remarquerez que seuls les articles pouvant être affichés en page d'accueil seront listés dans votre objet flash.

Bien entendu, il s'agit d'une solution d'attente comme indiqué au début de ce post.

Laurent
Bernard
avatar
from nearby-an-airport
Associate
6359 posts
registered on Sep. 12 2003

inspired from nuxwin on Mar. 26


Nuxwin: modification de feeds/flash/slashdot.php adoptée, et merci pour l'effort de recherche que tu as fait, c'est précieux ça... Ce sera dans la 8.3, livrés sous quelques jours normalement...