spipzine

Accueil > Ateliers > spipOpedia > Boucles

Boucles

mercredi 7 juin 2006, par spipOpède

Les boucles sont les procédures du langage SPIP qui permettent d’extraire des éléments de la base de données. Elles fonctionnent sur le principe de la récurrence, en parcourant les tables de la base.

For i = 1 to n

Dès les débuts de la programmation, le besoin s’est fait sentir d’algorithmes pour effectuer de façon répétitive un même traitement, d’où des structures de type :

For i = 1 to n
traitement
Next i

En langage clair, on demande d’effectuer le traitement, puis l’on incrémente le compteur i jusqu’à ce qu’il parvienne à la valeur n. Ce schéma de base a connu de nombreuses variantes selon les langages et les nécessités, mais il reste l’un des fondements de la programmation.

Dans SPIP, les boucles n’ont pas la même forme, mas le principe reste le même. Elles parcourent un ensemble de données, les mettent en forme, et permettent ainsi de préparer l’affichage de ces données sur la page html qui sera envoyée au navigateur.

Des boucles dans SPIP

SPIP s’appuie sur une base de données MySQL, où l’on trouve de nombreuses tables [1], telles que Rubriques, Articles, Auteurs, etc. C’est là qu’est stockée l’information qui apparaîtra dans les pages générées pour le site. Le langage SPIP permet donc d’envoyer des requêtes à la base de données pour y collecter les informations que l’on cherche, puis de les mettre en forme afin de générer les pages adaptées. Elles forment ainsi le cœur des squelettes.

La syntaxe simplifiée d’une boucle est la suivante :

<BOUCLE_spip(TABLE) {critères} {filtres}>
#BALISE_1
#BALISE_2
</BOUCLE_spip>

La première ligne sert à déclarer la boucle, en lui donnant un nom, et en indiquant à quelle table elle s’adresse. Les critères permettent de limiter le choix, de décider d’un ordre de tri, par exemple, et des filtres permettent d’appliquer un traitement aux informations extraites avant de les afficher, .

La dernière ligne ferme la boucle, en reprenant son nom. Elle est obligatoire.

À l’intérieur de la boucle, on désigne les champs que l’on désire afficher sous la forme de balises, caractérisées par leur notation qui commence par un dièse #. Lors de l’interprétation du squelette dans un navigateur, les balises seront remplacées par le contenu des champs pour générer de façon dynamique la page souhaitée.

Il existe principalement deux types de boucles SPIP :
- celles qui parcourent un enregistrement pour afficher tout ou partie de ses différents champs. On les utilisera par exemple pour une page Article, en affichant à la suite son titre son Titre, son Chapeau, son Texte…
- celles qui parcourent une table pour créer une liste des enregistrements. On pourra ainsi obtenir les articles d’une rubrique.

Ces deux modes peuvent être mixés : pour un forum, par exemple, on incorporera leur contenu dans la liste des messages postés.

SPIP permet également d’imbriquer les boucles. Ainsi, on peut imaginer une boucle Rubriques à l’intérieur de laquelle se trouve une boucle Articles. On obtiendra ainsi, à la suite de chaque mention de rubrique, la liste des articles qu’elle contient.

Comme on peut le voir, le système des boucles, malgré sa relative simplicité, est extrêmement puissant. C’est un des piliers de SPIP, et ce qui lui confère une souplesse qui fait défaut dans certains autres gestionnaires de contenu.

Plus d’information dans la documentation de spip.net :
- Des boucles et des balises
- La syntaxe des boucles
- Les critères communs à toutes les boucles
- http://www.spip.net/fr_article903.html
- Les boucles récursives
Un Index des boucles est disponible sur spip.net.
Il existe également une page pour chacun des catégories de boucles :
- ARTICLES, RUBRIQUES, BREVES, AUTEURS, FORUMS, MOTS(-clé), SITES (ou SYNDICATION), DOCUMENTS, SYNDIC_ARTICLES, SIGNATURES (de pétitions), et HIERARCHIE.

En pratique, une découverte des boucles dans SPIP pas à pas, et un approfondissement dans le Tutoriel : utilisation avancée des boucles et mots-clé, et enfin quelques bons exemples dans la rubrique Trucs et astuces.

Et, bien entendu, la caverne aux boucles de spip-contrib propose des boucles à étudier et / ou adapter.


[1Une table est un fichier constitué d’un certain nombre d’enregistrements, eux-même comportant des champs, qui contiennent l’information à proprement parler, de façon structurée. Par exemple, dans un fichier de personnes, chaque fiche sera un enregistrement, dont les champs seront les rubriques Nom, Prénom, Adresse, etc.