1

Un article au hasard parmi les 5 derniers

2 décembre 2007
par ARNO*

[SPIP 1.9.1] Voici une technique que j’ai développée pour notre site Flip-Zone ; dans les pages rubriques, je ne souhaitais pas afficher systématiquement, en grand, le dernier article publié, mais un article pris au hasard parmi les cinq derniers articles publiés.

Les boucles

Voici le code qui permet de récupérer un article pris au hasard parmi les cinq derniers publiés, dans une branche spécifique :

  1. <BOUCLE_5e(ARTICLES){branche}{par date}{inverse}{5,1}>
  2.      [(#SET{date_min,#DATE})]
  3. </BOUCLE_5e>
  4.  
  5. <BOUCLE_couverture_une(ARTICLES){branche}{date>=#GET{date_min}}{par hasard}{0,1}>
  6.       #ID_ARTICLE - #TITRE
  7. </BOUCLE_couverture_une>

Télécharger

La première boucle (BOUCLE_5e) permet de récupérer le cinquième article publié dans cette branche (ce code s’appliquant dans n’importe quelle rubrique du site, j’utilise le critère branche, qui prend tous les articles d’une rubrique et de ses sous-rubriques).

Je stocke la date de publication de cet article avec la balise #SET.

C’est dans la seconde boucle que se situe l’astuce : je sélectionne un article, pris au hasard, dans cette « branche », dont la date de publication est supérieure ou égale à la date de publication récupérée dans la boucle précédente.

Notes

• C’est typiquement le genre de boucle que j’aime dans SPIP : pas de bidouille compliquée, pas de grosse manipulation en PHP, code simple et lisible... et un peu de jus de cerveau pour trouver une jolie solution à un cas pratique.

• Que se passe-t-ils s’il n’y a pas cinq articles dans la branche ? Cela fonctionne tout de même : la première boucle ne contient aucun résultat (puisqu’il n’y a pas de « cinquième article »), et donc on ne stocke pas de valeur date_min. Dans la seconde boucle, le critère {date>=#GET{date_min}} revient donc à demander un article dont la date de publication est... supérieure à zéro (ce qui est le cas, justement, de tout article publié).

Qui êtes-vous ?
Votre message

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