De la même façon que La boucle ARTICLES et ses balises de champs permettait l’affichage du contenu des Articles, la boucle Auteurs opère sur la table de données de même nom, et plus généralement une boucle porte sur la table nommée entre parenthèses dans l’instruction de début [1] !
Une syntaxe balisée
Et comme on peut vouloir emboiter des boucles, chaque boucle doit être nommée : le mot-clé BOUCLE_
[2] doit être suivi d’un nom unique dans le squelette, qui permet d’apparier ensemble toutes les instructions qui composent la structure d’une boucle.
Entre cette instruction de début, initiée par le code <BOUCLE_...>
, et l’instruction de fin </BOUCLE_...>
qui marque le corps de boucle, vous indiquerez les balises au nom des champs que vous voulez afficher :
#NOM
, #ID_AUTEUR
, #BIO
, #EMAIL
...
En effet, le squelette d’affichage d’une table dans une page type HTML en SPIP, est un fichier HTML [3] ; il doit donc respecter la syntaxe du HTML, qui justement est un langage de balises, dont les éléments de commande sont présentés entre ces chevrons que sont < et >...
Ce qui vous donnera par exemple :
- <BOUCLE_init(AUTEURS) {id_auteur > 1}>
- #ID_AUTEUR = #NOM / #EMAIL <br />
- </BOUCLE_init>
Ici notre corps de boucle affichera sur une ligne à chaque fois [4], pour chaque enregistrement trouvé dans la table, avec le numéro et le nom de l’auteur, suivi de son e-mail...
Des critères de sélection
Mais que vient faire cette comparaison, écrite entre accolades après le nom de table ?
D’abord c’est effectivement une comparaison -et il pourrait y en avoir plusieurs- qui donne une condition pour que le corps de la boucle soit traité, donc pour cette exécution de la boucle en utilisant un enregistrement de la table ciblée soit affichée par interprétation des valeurs correspondantes aux balises de champs SPIP...
Cette condition met en relation d’ordre la valeur du champ étudié pour chaque ligne traitée, -ici le numéro identifiant de chaque ligne auteur- avec une valeur de seuil -le 1° auteur créé est forcément le webmestre créateur initial avec tous les droits- : c’est la façon de ne pas afficher cet auteur spécial, une bonne attitude de prudence et de sécurité.
Vous aurez remarqué qu’à contrario des champs utilisés dans le corps -et en majuscules préfixés du # (dièse)- le nom de champ est utilisé ici en minuscules et sans préfixe : il va servir au calcul des conditions de la boucle.
Par exemple, on va rajouter une autre condition de sécurité : ne jamais afficher les webmestre : ce statut particulier est codé dans un champ éponyme, et on va simplement l’indiquer dans un second critère, écrit juste derrière le premier, et donc avant le >
fermant de l’ouverture de la boucle :
- <BOUCLE_init(AUTEURS) {id_auteur > 1} {webmestre} >
.
Non, on ne veut pas les webmestres, il faut donc inverser ce critère = il vous suffit de préfixer la condition du point d’exclamation !
, ce qui donne :
- <BOUCLE_init(AUTEURS) {id_auteur > 1} { ! webmestre} >
- <li>#ID_AUTEUR = #NOM / #EMAIL </li>
- </BOUCLE_init>
Corps de Boucle : HTML, boucle SPIP et champs
Retenez que l’instruction d’entrée de boucle accepte, après le nom de la table cible (entre parenthèses), une liste de sélection par critère mis entre accolades ; vous trouverez dans des documentations complémentaires les diverses formes et conditions utilisables.
Vous avez remarqué que cette liste est mise aux normes du HTML ; son corps -contenant les balises de #CHAMPS
à afficher- est encadré à chaque ligne dans une paire de balises <li> ... </li>
bien connue : sans difficultés, elle a été ajoutée ci-dessus autour du corps de boucle...
Et vous pouvez bien sûr insérer des balises HTML [5] partout où elles seront nécessaires à votre présentation dans le corps de la boucle, dans le fichier HTML de squelette que vous visualiserez immédiatement dans votre navigateur..
Maintenant, un conseil : essayez, sur Une installation locale !
Téléchargez des exemples de boucles
et placez les dans votre dossier squelette.
Exécutez-les (ce sera plus simple avec ZPIP)
en précisant dans l’URL : ../spip.php?page=test&id_article=3
par exemple..
Article publié le 10 novembre 2012, et actualisé en juillet 2016 .
Répondre à cet article