Le Corps de la boucle
Comme vu précédemment, l’Architecture de boucle encadre et répète l’exécution d’un bloc HTML (affichant les textes trouvés par balise de champ) encadré par les tags <BOUCLE_..>
et </BOUCLE_..>
, pour tous les enregistrements correspondants au TYPE [1] d’objet ciblé, défini par le NOM de TABLES sql (exprimé en majuscules entre parenthèses dans le tag <BOUCLE_
) ; chaque boucle SPIP doit porter un nom unique dans le squelette [2], suffixe indiqué en minuscules après le <BOUCLE_
!
Sauf dans le cas des squelettes "unitaires" -c’est-à-dire qui n’affiche qu’un seul élément- la traduction et l’affichage HTML correspondant (en particulier pour la gestion CSS des menus) privilégieront un format de listes HTML, pour des affichages répétitifs...
Et votre navigateur aux normes du W3C vous fera peut-etre observer qu’une liste doit en HTML être typée, introduite et fermée par la paire <ul> ... </ul>
ou <on> ... </on>
.
Vous pourriez donc écrire quelque chose comme :
- <div class="menu auteurs">
- <ul class="menu-liste">
- <BOUCLE_menuaut(AUTEURS){id_auteur>1}>
- <li>#NOM #EMAIL</li>
- </BOUCLE_menuaut>
- <p>Il y a #TOTAL_BOUCLE Auteurs.</p>
- </ul>
- </div>
Oui mais !
Si vous n’aviez qu’un seul auteur, votre boucle -n’affichant que les auteurs au-delà du premier-le webmestre-, voir la condition- ne doit rien afficher, même pas de titre ! Comment faire, pour n’afficher qu’optionnellement des textes et informations encadrant la structure principale du corps de boucle ?
Les options de début et fin
La structure de boucle, délimitée par les deux tags <BOUCLE_..>
et </BOUCLE_..>
, peut être complétée par deux parties conditionnelles Avant et Après, ainsi que que (depuis SPIP 4) encadrée par deux parties permanentes : chacune de des parties complémentaire est bien sûr totalement optionnelle.
Ces parties sont logiquement présentées au-dessus et en-dessous du corps de la boucle, et marquées respectivement par les tags dérivés/abrégés pour les parties conditionnelles <B_..>
et </B_..>
, ou bien <BB_..>
et </BB_..>
pour les parties permanentes, également suffixés par le nom de boucle.
Ainsi vous rajouterez :
<B_menuaut>
avant (ou après) le <div class="menu auteurs">
et semblablement
</B_menuaut>
après(ou avant) le </div>
de fin...
Et une partie alternative
Mais si vous n’avez qu’un seul Webmestre, ou qu’il est le seul à avoir publié des articles.... et que vous avez inséré vos tags <B_..>
à l’interieur du bloc <div..>
, cela ne sera pas très joli : il y a O auteur... ?
Rajoutez alors en toute fin, un bloc alternatif, qui ne sera utilisé que dans le cas où la boucle n’a renvoyé aucun élément :
- <p>Aucun rédacteur public n'a encore d'articles publiés !
- <//B_menuaut>
A vous d’imaginer tous les usages, vous avez la solution.
Noter également -en particulier pour les adeptes du SQL- les options complémentaires de fusion
(regroupement de lignes) et de doublons
(mémorisations intermédiaires), qui seront évoquées dans un autre article.
Enfin, pour les adeptes des boucles imbriquées, l’appel dans une sous-<BOUCLE_bb(
d’une balise portant sur un champ de la <BOUCLE_aa(
de plus haut niveau s’écrira #_aa:CHAMP
au lieu de #CHAMP
si nécessaire en cas d’ambiguïté, parce que la <BOUCLE_bb( comporte aussi un #CHAMP
homonyme...
Et encore des nouveautés en SPIP4
La syntaxe complète des boucles est encore étendue en SPIP 4, avec l’introduction d’une syntaxe d’apparence conditionnelle, pour deux parties d’encadrement permanentes, toujours affichées :
en début de la boucle : encadrées entre <BB_
et <B_
en fin de la boucle : encadrées entre </B_
et </BB_
SPIP 4.x accepte aussi des boucles anonymes (à condition qu’elles ne soient pas imbriquées à l’intérieur d’une autre boucle).
Article publié le 13 juillet 2014, et actualisé en février 2022 détail .
Répondre à cet article