Trier les résultats d’une boucle par ordre alphabétique des auteurs

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 :

  1. Une boucle _globale (ici une boucle MOTS, mais toute autre boucle est possible) qui détermine la sélection du contenu à afficher ;
  2. 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.
  3. 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}).
  4. La quatrième boucle (_noms) ne sert qu’à afficher la liste des auteurs de l’article.

A propos de la question du classement alphabétique des auteurs, voyez aussi Améliorer l’affichage public et la gestion des auteurs et traducteurs d’un site SPIP

Dernière modification de cette page le 22 janvier 2007

Discussion

2 discussions

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom