Syntaxe complète d’une boucle

La boucle permet de répeter l’extraction/affichage de tous les enregistrement correspondants aux critères de sélection, au sein d’un squelette.

Mais dans certains cas, le contexte peut imposer d’autres traitements, en particulier avant et après le corps de la boucle, voire quand aucun contenu n’a pu être trouvé.

Article publié le 13 juillet 2014, et actualisé en février 2022

 
 
 
 
 
 
 
 
 
 
 
 
 
 
Attention, cette page est encore en  

 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 :

  1. <div class="menu auteurs">
  2. <ul class="menu-liste">
  3. <BOUCLE_menuaut(AUTEURS){id_auteur>1}>
  4.      <li>#NOM #EMAIL</li>
  5. </BOUCLE_menuaut>
  6. <p>Il y a #TOTAL_BOUCLE Auteurs.</p>
  7. </ul>
  8. </div>

Télécharger

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 :

  1. <p>Aucun rédacteur public n'a encore d'articles publiés !
  2. <//B_menuaut>

Télécharger

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


Merci de nous signaler les coquilles, imprécisions ou erreurs qui figureraient dans cette page.

[1L’usage subtile des jointures automatiques de SPIP permet de ciblé plusieurs objets différents, exprimés ou non dans la parenthèse TYPEs, voir l’article détaillé !

[2Dans chaque ’noisette’, de façon unitaire, sauf cas des boucles anonymes depuis SPIP 3


Liens A2A visibles seulement pour les inscrits.
Liens visibles seulement pour les inscrits.

Article publié le 13 juillet 2014, et actualisé en février 2022 détail .

Répondre à cet article