1

Articles suivant/précédent

8 novembre 2008
par ARNO*

[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.

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.