[SPIP 1.9.1] Afficher l’article précédent et l’article suivant peut se révéler assez compliqué dès lors que l’on adopte un ordre de présentation des articles un peu chiadé. Par exemple, présenter les articles par titre numéroté, ou par titre s’il n’y a pas de numéro.
Voici ce que je voulais obtenir pour le site du Centre de recherche du Château de Versailles :

Longtemps j’ai utilisé du PHP pour réaliser ces affichages. Mais, avec l’arrivée des filtres de test (|==
, |?{}
...) dans la version 1.8 et les balises permettant de gérer des « variables » (#SET
et #GET
), le langage de squelettes se rapproche de plus en plus d’un véritable langage de programmation (ou d’un langage de macro-commandes, à la manière de TEX), puisqu’il est désormais possible de gérer des variables et de réaliser des tests conditionnels sur ces variables1. Cela permet de ne plus utiliser de PHP, ni dans le squelette lui-même, ni dans mes_fonctions.php
.
Voici le code que j’ai réalisé pour obtenir une flèche vers l’article précédent, une flèche pour l’article suivant, et au centre la position de l’article dans la liste.
Si l’on souhaite choisir un autre ordre de présentation des articles, c’est dans les critères de la BOUCLE_meme_rubrique
qu’il faut intervenir.
Ici, je fixe dans les variables precedent
et suivant
directement les URL des articles ; si l’on veut une présentation plus complète, il suffit d’y conserver l’#ID_ARTICLE
plutôt que l’URL, et au moment de l’affichage, faire une petite boucle sélectionnant cet identifiant et afficher exactement ce que l’on veut (titre de l’article, sous-titre, auteurs, logo...).
1On peut penser qu’il manquerait, pour être un véritable langage de macro-commandes, la définition des fonctions ou de macros directement dans le système de balises SPIP ; mais on peut tout aussi bien considérer que l’utilisation de « noisettes » permet de définir de telles macro-commandes ; et les boucles récursives (réutilisation d’une boucle déjà définie) est également proche d’une logique de macro-commandes.