Avec le nouveau compilateur (version 1.8), il devient possible de faire très facilement certaines choses qui étaient particulièrement ardues jusqu’à présent. Par exemple : classer une liste d’articles (quel que soit le critère de sélection) selon l’ordre alphabétique des auteurs.
Classer des articles par ordre alphabétique des auteurs, ça n’a l’air de rien ; ce n’est pourtant pas trivial.
Ce dont il s’agit, exactement, c’est de classer ces articles selon le nom de famille du premier auteur de l’article dans l’ordre alphabétique. La chose n’est pas possible par un appel direct à la base de données (les auteurs ne sont pas stockés dans la même table que les articles, il peut en outre y avoir plusieurs auteurs pour un même article,...).
Nous allons donc utiliser une méthode indirecte : passer en revue tous les auteurs du site (avec une boucle AUTEURS sans critères) et afficher, au fur et à mesure, pour chacun, les articles qui correspondent à nos critère de recherche. Le critère {doublons}
permettra de n’afficher qu’une seule fois un même article.
Schématiquement, cela donne par exemple :
<BOUCLE_globale(MOTS) {criteres libres}>
<BOUCLE_auteurs(AUTEURS) {par nom}>
<BOUCLE_articles(ARTICLES) {id_mot=#_globale:ID_MOT} {id_auteur} {doublons}>
#TITRE
<BOUCLE_noms(AUTEURS) {par nom} {id_article} {", "}>#NOM</BOUCLE_noms>
#TEXTE
</BOUCLE_articles>
</BOUCLE_auteurs>
</BOUCLE_globale>
Si l’on repasse en détail l’action de cet ensemble de boucles, on a :
- Une boucle
_globale
(ici une boucle MOTS, mais toute autre boucle est possible) qui détermine la sélection du contenu à afficher ; - Une boucle AUTEURS qui ne sert qu’à passer en revue tous les auteurs du site pour vérifier si un de leurs articles correspond à la requête.
- Une boucle ARTICLES dans laquelle tout se passe. On sélectionne les articles écrit par l’auteur courant, correspondant aux critères de la première boucle (avec le capital critère
{id_mot=#_globale:ID_MOT}
qui nous permet d’aller récupérer un élément du contexte d’une boucle non directement contenante) et n’ayant pas encore été affiché ({doublons}
). - La quatrième boucle (
_noms
) ne sert qu’à afficher la liste des auteurs de l’article.
Discussions par date d’activité
2 discussions
Petite correction, la boucle AUTEURS n’a pas de balise #TEXTE, c’est #NOM qu’il faut utiliser pour afficher le nom, ou alors directement la balise #LESAUTEURS de la boucle ARTICLES.
Où est-ce que tu vois une balise #TEXTE à l’intérieur d’une boucle auteurs ? La seule qui se trouve (pour l’exemple) dans le code donné est dans une boucle articles.
Répondre à ce message
Bonjour et merci,
il y a une doc quelque part pour :
?
C’est expliqué dans le paragraphe intitulé « Balises non ambiguës » sur la page La syntaxe des balises SPIP, dans la documentation officielle.
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |