Des boucles et des balises

Tout ce qui suit concerne désormais le langage de description de la mise en page des squelettes dans SPIP ; si vous avez bien compris le Principe général, vous savez que nous travaillons donc dans les fichiers « .html ».

La présente documentation est volontairement technique (il s’agit ici de références techniques) ; vous pouvez préférer commencer par notre guide Pas à pas, plus didactique, et revenir ensuite ici pour une documentation plus précise.

Des boucles

La notion de base du langage de SPIP est la boucle.

-  La logique de la boucle

Une base de données, classiquement, c’est une liste d’éléments : ici, une liste des articles, une liste des rubriques, une liste des auteurs, etc. Pour « fabriquer » le site, on va donc extraire de cette liste certains de ses éléments :
-  à la base, on veut extraire un seul élément d’une liste ; par exemple, afficher l’article désiré ;
-  mais il est fréquent d’extraire plusieurs éléments d’une liste ; par exemple, dans la page d’une rubrique, on veut afficher tous les articles contenus dans cette rubrique, ainsi que toutes les sous-rubriques contenues dans cette rubrique ;
-  plus subtil : il arrive fréquemment qu’il n’y ait pas d’éléments satisfaisants à tel ou tel endroit ; SPIP doit alors pouvoir gérer l’éventualité de l’absence de ces éléments ; par exemple, le squelette de l’affichage des rubriques demande l’affichage de toutes les sous-rubriques contenues dans une rubrique ; que faire, alors, s’il n’y a pas sous-rubriques dans cette rubrique spécifique ?

Ces trois situations sont traitées par la notion unique de boucle, qui permet à la fois de gérer l’affichage d’un seul élément, de plusieurs éléments successifs, ou l’absence d’éléments.

Le système de boucle permet, dans un code unique :
-  d’indiquer à quel endroit du code HTML on a besoin de quel type d’élément (à tel endroit on veut récupérer la liste des articles, à tel endroit on veut inclure la liste des sous-rubriques...) ;
-  de prévoir l’affichage d’un élément unique ;
-  d’indiquer comment est affichée une liste de plusieurs éléments ;
-  de déterminer ce qu’on affiche lorsqu’il n’y a aucun élément correspondant.

Analogie avec la programmation en PHP/mySQL

Ceux qui ont déjà programmé des requêtes mySQL en PHP savent que le traitement se déroule en deux temps :
-  la construction de la syntaxe de la requête (qui consiste à dire « je veux récupérer la liste des articles contenus dans telle rubrique... ») ;
-  l’analyse et l’affichage des résultats au travers d’une boucle.

Ce sont ces deux événements qui sont gérés, dans SPIP, au travers des boucles.

Les balises SPIP

Grâce aux boucles, on a donc récupéré des éléments uniques ou des listes d’éléments : par exemple une liste d’articles ou une liste de rubriques...

Cependant, chaque élément de telles listes est composé de plusieurs éléments précis : par exemple un article se compose d’un titre, d’un surtitre, d’un sous-titre, d’un texte d’introduction (chapeau), d’un texte principal, d’un post-scriptum, etc. Il existe ainsi des balises spécifiques à SPIP, permettant d’indiquer précisément à quel endroit on affiche des éléments : « placer le titre ici », « placer le texte ici »...

Les balises à l’intérieur des boucles

Voici, au travers d’un cas classique, le principe de fonctionnement général d’une boucle accompagnée de ses balises (attention, ça n’est pas du langage SPIP, c’est une description logique) :

BOUCLE : afficher la liste des articles de cette rubrique
afficher ici le titre de l’article
afficher le sous-titre
afficher le texte
Fin de la BOUCLE

Cette boucle, analysée par SPIP, peut donner trois résultats différents.

-  Il n’y a aucun article dans cette rubrique.

Dans ce cas, bien évidemment, aucun des éléments « afficher ici... (titre, sous-titre...) » n’est utilisé. En revanche, si on l’a prévu, on peut afficher un message du genre « Il n’y a pas d’article ».

-  Il y a un seul article dans cette rubrique.

Dans ce cas, très simplement, la page HTML est construite sur le modèle de la boucle :

Titre de l’article
Sous-titre
Texte de l’article

-  Il y a plusieurs articles dans cette rubrique.

La description de la mise en page (« placer ici... ») va alors être calculée successivement pour chacun des articles. Ce qui donne simplement :

Titre de l’article 1
Sous-titre de l’article 1
Texte de l’article 1

Titre de l’article 2
Sous-titre de l’article 2
Texte de l’article 2
...
Titre du dernier article
Sous-titre du dernier article
Texte du dernier article

La suite de ce guide de référence se construira donc de la manière suivante :
-  syntaxe générale des boucles ;
-  syntaxe générale des balises de SPIP ;
-  et, ensuite, une page spécifique à chaque type de boucles, indiquant quelles balises on peut y utiliser.

Auteur L’équipe de SPIP Publié le : Mis à jour : 28/08/22

Traductions : عربي, català, Deutsch, English, Español, français, italiano, Nederlands, українська