J’ai reçu quelques mails concernant le bloc « Dernières publications » affiché sur les pages de ce site. Voilà le code que j’ai inclus afin d’afficher les fameux liens Les « 5 articles précédents » et « 5 articles suivants ». Le but du jeu est d’afficher ces 2 liens sauf pour la première fois où il n’y aura que d’affiché que « 5 articles suivants » et pour le dernier appel où ne sera affiché que « 5 articles précédents ».
Je vous renvoie pour les explications de la boucles à cet article de Spip-Contrib qui vous explique tout en détail. C’est en effet à partir de cet article que j’ai construit le code présenté ci-dessous.
L’astuce consiste à faire passer 2 paramètres à cet INCLURE. Le premier est le {debut=#ENV{debut,0}}
qui dit que le premier article à afficher aura comme numéro le 0. Le deuxième paramètre est {nb=#ENV{nb,5}}
qui donne le pas d’incrémentation des articles à afficher. Ici nous avons choisi 5 articles à la fois. Vous pouvez changer cette valeur.
Pour l’affichage du lien « Les 5 articles précédents », voici le code à mettre :
[(#GET{boucle}|=={5}|non)
<a class="ajax" href="[(#SELF|parametre_url{debut,[(#ENV{debut}|moins{5})] |sinon{0}})|parametre_url{nb,[(#ENV{nb}|moins{5})]})#more]" title="Les 5 articles précédents">Précédentes</a>
]
Le test vérifie si le numéro de la boucle est égal à 5, si oui, nous n’affichons pas le lien car c’est le premier affichage et il n’y a pas d’article précédent. Sinon, on affiche le lien car cela veut dire que boucle
est supérieur à 5. En effet, nous avons paramètré les itérations de la boucle de 5 en 5.
Attention, petite subtilité ! J’ai ajouté un filtre |sinon{0}
dans le code. En effet, si vous mettez cet INCLURE dans votre page sommaire, au premier affichage debut|moins{5}
sera égal à 0. Spip comprend que debut
est vide. On fait donc un test et si on constate que debut
est vide, alors on met debut
=0 pour que cela fonctionne.
Pour le lien « Les 5 articles suivants », on écrit ceci :
[(#GET{total}|=={#GET{boucle}}|non)
<a class="ajax" href="[(#SELF|parametre_url{debut,[(#ENV{debut}|moins{5})]}) |parametre_url{nb,[(#ENV{nb}|moins{5})]})#more]" title="Les 5 articles précédents">Précédentes</a>
]
Le teste vérifie si le numéro de la boucle est égal au nombre de boucles, si non, on affiche le lien car cela veut dire que boucle
est inférieur. Quand [(#GET{total}|=={#GET{boucle}}
, c’est que nous sommes à la fin des itérations de la boucle articles et donc, nous n’affichons pas le lien articles suivants.
Voici le code complet du fichier INCLURE.