Balise de champ

Une Balise en SPIP désigne un mot-clé [1] utilisé dans le langage de SPIP dans un squelette, calculé en général par le moteur de SPIP en rapport avec la table parcourue dans la boucle courante, depuis la base de données.

Dans la forme la plus courante, on utilise un nom de balise pour faire directement appel à l’affichage d’un champ de la table courante, parcourue par la boucle ; mais le compilateur de SPIP fourni d’autres balises, calculées à partir de la base de données, ou à partir de traitement spécifiques sur les squelettes, en particulier pour les #FORMULAIRES automatiques de SPIP, et permet d’y adjoindre filtres de traitement, et des parties optionnelles, affichées seulement si le résultat calculé n’est pas vide : ces facilités permettent de réaliser facilement des squelettes (ou des noisettes, voire des modèles) d’affichage de vos données.

 
 
 
 
 
 
 
 
 
 

Le terme de #BALISE (placé dans un squelette) identifie pour le moteur de SPIP un élément à calculer pour l’afficher au sein du squelette, en fonction du contexte de boucle et d’environnement courant.

Ne pas confondre avec les balises HTML, mots-clés du langage HTML de description des pages : les balises HTML sont elles mises entre < ..balise HTML..> ; les instructions SPIP en reprennent parfoislasyntaxe en étendant le langage.
Ainsi les instructions SPIP utilisent cette syntaxe HTML (bien qu’elles doivent être ’compilées’ par SPIP pour etre traitées [2] : celles décrivant les et les de noisettes .
Mais les balises #SPIP ne seront calculées (et traitées) que par un squelette SPIP,
sinon elles seront seulement affichées textuellement...

La syntaxe d’identification d’une balise est d’avoir un mot-clé en Majuscules, préfixé d’un dièse (#). La plupart des balises acceptent de recevoir des paramètres, mis entre accolades et non entre parenthèses comme dans les fonctions traditionnelles ; en effet, les parenthèses sont utilisées pour décider de l’affichage de parties optionnelles avant et après le texte généré par la balise, le tout étant délimité entre crochets..

Le compilateur de SPIP peut avoir à calculer une balise dans plusieurs contextes, ce qui sera l’occasion de s’intéresser à Balises, critères et filtres : à ne pas confondre...

 Balise de champ dans une boucle

Dans un squelette la structure de base est la boucle de parcours d’une table de données ; le premier besoin est d’afficher des champs de la table.
Il suffit d’indiquer le nom de champ selon la syntaxe indiquée, pour assurer l’affichage du champ de données correspondant.
SPIP vous permet de pré-traiter cet affichage avec un grand nombre de filtres

 Balises calculées sur la base de données

L’accès à la base de données de SPIP est simplifié, car le moteur offre de nombreuses fonctionnalités sous forme abrégée ; ainsi une balise #LESAUTEURS fournit à l’affichage la liste de tous les auteurs d’un article (car ils peuvent être plusieurs à co-rédiger dans l’espace privé).
Plus surement vous ferez appel à la balise INCLURE, et vous aurez besoin souvent des balises d’#URL_ fournissant immédiatement le calcul des hyper-liens vers les composants du site (Article, Rubrique, etc..) : un usage très fréquent donne un lien d’appel vers un article, dans une boucle de recherche des articles dans la rubrique : exemple :

<BOUCLE_rubriques(RUBRIQUES){racine}>
       
        <h2 class="h2"><a href="#URL_RUBRIQUE">#TITRE</a></h2>
        <ul class="liste-items"><!-- Articles de la rubrique -->
        <BOUCLE_articles(ARTICLES){id_rubrique} {!par date} >
                #INCLURE{fond=inclure/article-resume,id_article}
        </BOUCLE_articles>
        </ul>
</BOUCLE_rubriques>


N.B. : attention aux différences avec <INCLURE..

 Balises de formulaires calculés

Toujours pour faciliter la gestion des squelettes, le moteur de SPIP étend le principe et la syntaxe des balises pour permettre d’#INCLURE des noisettes comme ci-dessus, ou meme des FORMULAIRES prédéfinis, c’est la série des balises #FORMULAIRE_xxx


 Programmation de Balises personnalisées

Ce mécanisme des balises peut très facilement être étendu, en particulier pour appeler une exécution spécifique de code php dans vos squelettes : ce sont les balises utilisateurs, que l’on associe à un appel de fonction php dans un squelette.
Vous pourrez trouver deux qualificatifs pour les balises de SPIP :
- les balises statiques  : gardent un code constant pour le cache du squelette,
- les balises dynamiques  : sont recalculées pour chaque occurrence de page [3]

La définition d’une balise personnalisée #TOTO s’effectue en écrivant dans votre fichier mes_options une fonction php nommée :

  1. function balise_TOTO($p) {
  2. // code php de votre balise : voir ecrire/public/balises.php
  3. ....
  4.  
  5. $p->code = .. ; // renvoyer le résultat à insérer dans l'affichage final
  6. return $p;
  7. }

Télécharger

N.B. Pour l’utilisation de paramètres contextuels du squelette, c’est un peu plus compliqué ;-)


Merci de nous signaler les coquilles ou erreurs qui figureraient dans cette page.

[1Mot mis en majuscules, et préfixé d’un dièse, pour désigner une balise

[2L’avantage d’utiliser une syntaxe intégrée est de vous permettre de visualiser votre page en HTML -avec un navigateur simple- sans planter tout le bazar..

[3A condition que la page soit appelée par <INCLURE{fond..., l’appel par #INCLURE{... ne réactive pas le recalcul de cache dynamique..

[4Mot mis en majuscules, et préfixé d’un dièse, pour désigner une balise


Liens visibles seulement pour les inscrits.

Article publié le 14 janvier 2012, et actualisé en août 2017 .

Répondre à cet article