jp.guihard.net
https://www.jp.guihard.net/spip.php?article102
Pagination 5 articles suivants - précédents
mercredi, 17 novembre 2010 / guihard

Pagination suivants - précédents.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&eacute;c&eacute;dents">Pr&eacute;c&eacute;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&eacute;c&eacute;dents">Pr&eacute;c&eacute;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.



Documents à télécharger
• Le source de cet article, (Zip - 16.5 ko)