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

Discussion

2 discussions

Add a comment

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite / PostgreSQL
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparait.

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.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom