You are on page 1of 186

Documentation SPIP

Manuel de rfrence des boucles et balises

Manuel de rfrence des boucles et balises


Comment crer les pages dun site gr sous SPIP, grce au langage des boucles, balises et filtres de SPIP.

MANUEL DE REFERENCE DES BOUCLES ET BALISES .......................................................................... 3 DES BOUCLES ET DES BALISES .................................................................................................................... 8 LA SYNTAXE DES BOUCLES......................................................................................................................... 11 LA SYNTAXE DES BALISES SPIP ................................................................................................................. 16 LA BOUCLE ARTICLES .................................................................................................................................. 20 LA BOUCLE RUBRIQUES ............................................................................................................................... 24 LA BOUCLE BREVES....................................................................................................................................... 28 LA BOUCLE AUTEURS.................................................................................................................................... 31 LA BOUCLE FORUMS ..................................................................................................................................... 33 LA BOUCLE MOTS........................................................................................................................................... 36 LA BOUCLE DOCUMENTS............................................................................................................................. 38 LA BOUCLE SITES (OU SYNDICATION) .................................................................................................... 41 LA BOUCLE SYNDIC_ARTICLES ................................................................................................................. 43 LA BOUCLE SIGNATURES............................................................................................................................. 45 LA BOUCLE HIERARCHIE ............................................................................................................................ 47 LES CRITERES COMMUNS A TOUTES LES BOUCLES .......................................................................... 48 LES BALISES PROPRES AU SITE ................................................................................................................. 55 LES FORMULAIRES......................................................................................................................................... 59 LES FILTRES DE SPIP ..................................................................................................................................... 63 LES BOUCLES RECURSIVES......................................................................................................................... 73 LA GESTION DES DATES ............................................................................................................................... 75 BALISES .............................................................................................................................................................. 78 #AIDER ............................................................................................................................................................ 78 #ANCRE_PAGINATION ................................................................................................................................ 78 #ARRAY .......................................................................................................................................................... 79 #AUTORISER.................................................................................................................................................. 83 #BIO ................................................................................................................................................................. 83 #BOUTON_ACTION (DEPUIS SPIP 2.1) ......................................................................................................... 84 #CACHE........................................................................................................................................................... 85 #CHAMP_SQL ................................................................................................................................................ 85 #CHAPO........................................................................................................................................................... 85 #CHARSET ...................................................................................................................................................... 86 #CHEMIN ........................................................................................................................................................ 86 #COMPTEUR_BOUCLE................................................................................................................................. 87 #CONFIG ......................................................................................................................................................... 87 #DATE ............................................................................................................................................................. 87 #DATE_MODIF, #DATE_REDAC................................................................................................................. 88 #DATE_NOUVEAUTES................................................................................................................................. 88 #DESCRIPTIF.................................................................................................................................................. 88 #DESCRIPTIF_SITE_SPIP ............................................................................................................................. 88

Manuel de rfrence des boucles et balises

3/186

#DISTANT ....................................................................................................................................................... 88 #DOSSIER_SQUELETTE ............................................................................................................................... 89 #DOUBLONS .................................................................................................................................................. 89 #EDIT ............................................................................................................................................................... 89 #EDITABLE..................................................................................................................................................... 90 #EMAIL ........................................................................................................................................................... 90 #EMAIL_WEBMASTER................................................................................................................................. 90 #EMBED_DOCUMENT.................................................................................................................................. 91 #ENV................................................................................................................................................................ 91 #EVAL ............................................................................................................................................................. 92 #EXTENSION.................................................................................................................................................. 92 #FICHIER......................................................................................................................................................... 93 #FILTRE........................................................................................................................................................... 93 #FOREACH ..................................................................................................................................................... 94 #FORMULAIRE_ADMIN............................................................................................................................... 95 #FORMULAIRE_ECRIRE_AUTEUR ............................................................................................................ 96 #FORMULAIRE_FORUM .............................................................................................................................. 96 #FORMULAIRE_INSCRIPTION.................................................................................................................... 96 #FORMULAIRE_SIGNATURE...................................................................................................................... 96 #GET ................................................................................................................................................................ 97 #HAUTEUR ..................................................................................................................................................... 97 #HTTP_HEADER ............................................................................................................................................ 97 #ID_ARTICLE ................................................................................................................................................. 98 #ID_DOCUMENT ........................................................................................................................................... 98 #ID_RUBRIQUE.............................................................................................................................................. 98 #ID_SECTEUR ................................................................................................................................................ 98 #INSERT_HEAD ............................................................................................................................................. 99 #INSERT_HEAD_CSS .................................................................................................................................... 99 #INTRODUCTION ........................................................................................................................................ 100 #LANG ........................................................................................................................................................... 100 #LANG_DIR, #LANG_LEFT, #LANG_RIGHT ........................................................................................... 100 #LARGEUR ................................................................................................................................................... 101 #LESAUTEURS............................................................................................................................................. 101 #LOGO_ARTICLE ........................................................................................................................................ 101 #LOGO_ARTICLE_RUBRIQUE .................................................................................................................. 102 #LOGO_AUTEUR ......................................................................................................................................... 104 #LOGO_AUTEUR_NORMAL...................................................................................................................... 105 #LOGO_AUTEUR_SURVOL ....................................................................................................................... 105 #LOGO_DOCUMENT................................................................................................................................... 106 #LOGO_SITE_SPIP....................................................................................................................................... 106 #MENU_LANG, #MENU_LANG_ECRIRE................................................................................................. 106 #MIME_TYPE ............................................................................................................................................... 107 #NOM_SITE .................................................................................................................................................. 107 #NOM_SITE_SPIP ........................................................................................................................................ 107 #NOTES ......................................................................................................................................................... 107 #PARAMETRES_FORUM............................................................................................................................ 108 #PETITION .................................................................................................................................................... 108 #PLUGIN ....................................................................................................................................................... 109 #POPULARITE.............................................................................................................................................. 109 #PUCE............................................................................................................................................................ 109 #PS.................................................................................................................................................................. 110 #REM ............................................................................................................................................................. 110 #SELF............................................................................................................................................................. 111 #SESSION ...................................................................................................................................................... 112 #SESSION_SET ............................................................................................................................................. 113 #SET ET #GET................................................................................................................................................ 115 #SOUSTITRE................................................................................................................................................. 116 #SQUELETTE................................................................................................................................................ 116 #SURTITRE ................................................................................................................................................... 116 #TAILLE ........................................................................................................................................................ 116 #TEXTE ......................................................................................................................................................... 117 #TITRE........................................................................................................................................................... 117 #TOTAL_BOUCLE ....................................................................................................................................... 117

Manuel de rfrence des boucles et balises

4/186

#TOTAL_UNIQUE........................................................................................................................................ 117 #TYPE_DOCUMENT.................................................................................................................................... 118 #URL_ARTICLE ........................................................................................................................................... 118 #URL_AUTEUR ............................................................................................................................................ 119 #URL_DOCUMENT...................................................................................................................................... 119 #URL_RUBRIQUE........................................................................................................................................ 120 #URL_SITE_SPIP.......................................................................................................................................... 120 #URL_PAGE.................................................................................................................................................. 120 #URL_SITE, #NOM_SITE ............................................................................................................................ 121 #VAL.............................................................................................................................................................. 121 #VISITES ....................................................................................................................................................... 121 CRITERES ........................................................................................................................................................ 122 {BRANCHE} ..................................................................................................................................................... 122 {COLLECTE} .................................................................................................................................................... 122 {CRITERE ?} .................................................................................................................................................... 125 {CRITERE IN VALEUR1, VALEUR2[, VALEUR3,..., VALEURN]} ......................................................................... 125 {CRITERE LIKE VALEUR} ............................................................................................................................... 126 {CRITERE ?OPERATEUR VALEUR}.................................................................................................................... 127 { !CRITERE OPERATEUR VALEUR}.................................................................................................................... 127 {CRITERE !OPERATEUR VALEUR} .................................................................................................................... 128 {DATE}............................................................................................................................................................ 128 {DOUBLONS} ................................................................................................................................................... 128 {FUSION CHAMP_SQL}..................................................................................................................................... 132 {ID_ARTICLE} ................................................................................................................................................. 133 {ID_AUTEUR} .................................................................................................................................................. 133 {ID_GROUPE} .................................................................................................................................................. 134 {ID_MOT}........................................................................................................................................................ 134 {ID_RUBRIQUE}............................................................................................................................................... 134 {ID_SECTEUR}................................................................................................................................................. 134 {LANG} ........................................................................................................................................................... 134 {ORIGINE_TRADUCTION}................................................................................................................................. 134 {RECHERCHE} ................................................................................................................................................. 135 {TITRE_MOT}, {TYPE_MOT}............................................................................................................................ 135 {TOUS} ............................................................................................................................................................ 135 {TOUT}............................................................................................................................................................ 135 {TRADUCTION}................................................................................................................................................ 136 {VU}................................................................................................................................................................ 136 LES FILTRES ................................................................................................................................................... 138 |ABS_URL ......................................................................................................................................................... 140 |ABS_URL ......................................................................................................................................................... 140 |AFFDATE ......................................................................................................................................................... 140 |AFFDATE_COURT ............................................................................................................................................ 140 |AFFDATE_JOURCOURT .................................................................................................................................... 140 |AFFDATE_MOIS_ANNEE .................................................................................................................................. 141 |AFFICHER_ENCLOSURES ................................................................................................................................. 141 |AFFICHER_TAGS.............................................................................................................................................. 141 |AGENDA_AFFICHE........................................................................................................................................... 141 |AGENDA_CONNU............................................................................................................................................. 142 |AGENDA_MEMO .............................................................................................................................................. 142 |ALTERNER....................................................................................................................................................... 143 |ANCRE_URL .................................................................................................................................................... 144 |ANNEE ............................................................................................................................................................ 144 |APPLIQUER_FILTRE ......................................................................................................................................... 144 |ATTRIBUT_HTML............................................................................................................................................. 144 |BALISE_IMG .................................................................................................................................................... 145 |CHOIXSIEGAL{VALEUR, SIOUI, SINON} ........................................................................................................... 145 |CHOIXSIVIDE{SIOUI, SINON} ........................................................................................................................... 145 |COMPACTE ...................................................................................................................................................... 145 |CONCAT{VALEUR1, VALEUR2, ...} .................................................................................................................. 146 |COULEUR_* .................................................................................................................................................... 146 |COPIE_LOCALE................................................................................................................................................ 149

Manuel de rfrence des boucles et balises

5/186

|COUPER ........................................................................................................................................................... 150 |DATE_822....................................................................................................................................................... 151 |DATE_RELATIVE ............................................................................................................................................. 151 |DIRECTION_CSS .............................................................................................................................................. 151 |DIV.................................................................................................................................................................. 152 |ENTITES_HTML ............................................................................................................................................... 152 |ENV_TO_PARAMS ........................................................................................................................................... 152 |ET ................................................................................................................................................................... 153 |EXTRAIRE_ATTRIBUT ...................................................................................................................................... 153 |EXTRAIRE_BALISE .......................................................................................................................................... 154 |FICHIER ........................................................................................................................................................... 154 |FIND ................................................................................................................................................................ 155 |FOREACH ........................................................................................................................................................ 155 |FORM_HIDDEN ................................................................................................................................................ 156 |HAUTEUR ........................................................................................................................................................ 156 |HEURES ........................................................................................................................................................... 156 |IMAGE_PASSE_PARTOUT ................................................................................................................................. 156 |INSERER_ATTRIBUT ........................................................................................................................................ 157 |IS_NULL .......................................................................................................................................................... 157 |JOUR ............................................................................................................................................................... 158 |LARGEUR ........................................................................................................................................................ 158 |LIENS_ABSOLUS .............................................................................................................................................. 158 |LIEN_OU_EXPOSE ........................................................................................................................................... 158 |LIENS_OUVRANTS ........................................................................................................................................... 159 |LIGNES_LONGUES ........................................................................................................................................... 159 |MATCH ............................................................................................................................................................ 160 |MINUTES ......................................................................................................................................................... 160 |MODULO ......................................................................................................................................................... 161 |MOINS ............................................................................................................................................................. 161 |MOIS ............................................................................................................................................................... 162 |MULT .............................................................................................................................................................. 162 |NOM_JOUR ...................................................................................................................................................... 162 |NOM_MOIS ...................................................................................................................................................... 162 |NON ................................................................................................................................................................ 163 |OU ................................................................................................................................................................... 163 |OUI.................................................................................................................................................................. 163 |PARAMETRE_URL............................................................................................................................................ 163 |PLUS ............................................................................................................................................................... 164 |PTOBR ........................................................................................................................................................... 164 |PUSH ............................................................................................................................................................... 165 |REPLACE ......................................................................................................................................................... 166 |SAFEHTML ...................................................................................................................................................... 166 |SAISON ............................................................................................................................................................ 167 |SECONDES ....................................................................................................................................................... 167 |SINGULIER_OU_PLURIEL{ XXX:CHAINE_UN, XXX:CHAINE_PLUSIEURS} ......................................................... 167 | ?{SIOUI, SINON}............................................................................................................................................. 168 |SINON.............................................................................................................................................................. 168 |SUPPRIMER_NUMERO ...................................................................................................................................... 169 |SUPPRIMER_TAGS ........................................................................................................................................... 169 |TABLE_VALEUR .............................................................................................................................................. 169 |TAILLE_EN_OCTETS ........................................................................................................................................ 170 |TEXTE_BACKEND ............................................................................................................................................ 170 |TEXTEBRUT ..................................................................................................................................................... 171 |TEXTE_SCRIPT ................................................................................................................................................ 171 |TRADUIRE_NOM_LANGUE ............................................................................................................................... 171 |UNIQUE ........................................................................................................................................................... 172 |URL_ABSOLUE ................................................................................................................................................ 173 |URL_ABSOLUE_CSS......................................................................................................................................... 173 |VIDER_ATTRIBUT ............................................................................................................................................ 174 |XOU ................................................................................................................................................................ 174 |>{A}............................................................................................................................................................... 175 |>={A}............................................................................................................................................................. 175 |<{A}............................................................................................................................................................... 175

Manuel de rfrence des boucles et balises

6/186

|<={A}............................................................................................................................................................. 175 | !={A}............................................................................................................................................................. 176 |=={A}............................................................................................................................................................. 176 VARIABLES ET CONSTANTES DE PERSONNALISATION................................................................... 177 _CNIL_PERIODE .......................................................................................................................................... 177 _DIR_PLUGINS_AUTO ............................................................................................................................... 177 _DOC_MAX_SIZE ........................................................................................................................................ 178 _ID_WEBMESTRES ..................................................................................................................................... 179 _IMG_MAX_HEIGHT .................................................................................................................................. 179 _IMG_MAX_SIZE......................................................................................................................................... 180 _IMG_MAX_WIDTH.................................................................................................................................... 181 _MAX_ART_AFFICHES .............................................................................................................................. 181 _NOM_PERMANENTS_ACCESSIBLES .................................................................................................... 182 _NOM_PERMANENTS_INACCESSIBLES ................................................................................................ 182 _NOM_TEMPORAIRES_ACCESSIBLES ................................................................................................... 182 _NOM_TEMPORAIRES_INACCESSIBLES ............................................................................................... 183 _TRI_ARTICLES_RUBRIQUE .................................................................................................................... 183 $CONTROLER_DATES_RSS ............................................................................................................................... 183 $FILTRER_JAVASCRIPT .................................................................................................................................... 184 $NOMBRE_DE_LOGS ........................................................................................................................................ 185 $SPIP_HEADER_SILENCIEUX ............................................................................................................................ 185 $TAILLE_DES_LOGS ......................................................................................................................................... 186

Manuel de rfrence des boucles et balises

7/186

Des boucles et des balises


Juin 2001 maj : Novembre 2003

Tout ce qui suit concerne dsormais le langage de description de la mise en page des squelettes dans SPIP ; si vous avez bien compris lexplication prcdente, vous savez que nous travaillons donc dans les fichiers .html . La prsente documentation est volontairement technique (il sagit ici de rfrences techniques) ; vous pouvez prfrer commencer par notre guide Pas pas, plus didactique, et revenir ensuite ici pour une documentation plus prcise.

Des boucles
La notion de base du langage de SPIP est la boucle. - La logique de la boucle Une base de donnes, classiquement, cest une liste dlments : ici, une liste des articles, une liste des rubriques, une liste des auteurs, etc. Pour fabriquer le site, on va donc extraire de cette liste certains de ses lments : - la base, on veut extraire un seul lment dune liste ; par exemple, afficher larticle dsir ; - mais il est frquent dextraire plusieurs lments dune liste ; par exemple, dans la page dune rubrique, on veut afficher tous les articles contenus dans cette rubrique, ainsi que toutes les sous-rubriques contenues dans cette rubrique ; - plus subtil : il arrive frquemment quil ny ait pas dlments satisfaisants tel ou tel endroit ; SPIP doit alors pouvoir grer lventualit de labsence de ces lments ; par exemple, le squelette de laffichage des rubriques demande laffichage de toutes les sousrubriques contenues dans une rubrique ; que faire, alors, sil ny a pas sous-rubriques dans cette rubrique spcifique ? Ces trois situations sont traites par la notion unique de boucle, qui permet la fois de grer laffichage dun seul lment, de plusieurs lments successifs, ou labsence dlments. Le systme de boucle permet, dans un code unique : - dindiquer quel endroit du code HTML on a besoin de quel type dlment ( tel endroit on veut rcuprer la liste des articles, tel endroit on veut inclure la liste des sousrubriques...) ; - de prvoir laffichage dun lment unique ; - dindiquer comment est affiche une liste de plusieurs lments ; - de dterminer ce quon affiche lorsquil ny a aucun lment correspondant. Analogie avec la programmation en PHP/mySQL Ceux qui ont dj programm des requtes mySQL en PHP savent que le traitement se droule en deux temps : - la construction de la syntaxe de la requte (qui consiste dire je veux rcuprer la liste des articles contenus dans telle rubrique... ) ; - lanalyse et laffichage des rsultats au travers dune boucle.

Manuel de rfrence des boucles et balises

8/186

Ce sont ces deux vnements qui sont grs, dans SPIP, au travers des boucles.

Les balises SPIP


Grce aux boucles, on a donc rcupr des lments uniques ou des listes dlments : par exemple une liste darticles ou une liste de rubriques... Cependant, chaque lment de telles listes est compos de plusieurs lments prcis : par exemple un article se compose dun titre, dun surtitre, dun sous-titre, dun texte dintroduction (chapeau), dun texte principal, dun post-scriptum, etc. Il existe ainsi des balises spcifiques SPIP, permettant dindiquer prcisment quel endroit on affiche des lments : placer le titre ici , placer le texte ici ...

Les balises lintrieur des boucles


Voici, au travers dun cas classique, le principe de fonctionnement gnral dune boucle accompagne de ses balises (attention, a nest pas du langage SPIP, cest une description logique) :
BOUCLE : afficher la liste des articles de cette rubrique afficher ici le titre de l'article afficher le sous-titre afficher le texte

Fin de la BOUCLE

Cette boucle, analyse par SPIP, peut donner trois rsultats diffrents. - Il ny a aucun article dans cette rubrique. Dans ce cas, bien videmment, aucun des lments afficher ici... (titre, sous-titre...) nest utilis. En revanche, si on la prvu, on peut afficher un message du genre Il ny a pas darticle . - Il y a un seul article dans cette rubrique. Dans ce cas, trs simplement, la page HTML est construite sur le modle de la boucle :
Titre de l'article Sous-titre Texte de l'article

- Il y a plusieurs articles dans cette rubrique. La description de la mise en page ( placer ici... ) va alors tre calcule successivement pour chacun des articles. Ce qui donne simplement :
Titre de l'article 1 Sous-titre de l'article 1 Texte de l'article 1 Titre de l'article 2

Manuel de rfrence des boucles et balises

9/186

Sous-titre de l'article 2 Texte de l'article 2 ...

Titre du dernier article Sous-titre du dernier article Texte du dernier article

La suite de ce guide de rfrence se construira donc de la manire suivante : - syntaxe gnrale des boucles ; - syntaxe gnrale des balises de SPIP ; - et, ensuite, une page spcifique chaque type de boucles, indiquant quelles balises on peut y utiliser.

Manuel de rfrence des boucles et balises

10/186

La syntaxe des boucles


Mai 2001 maj : Novembre 2009

Syntaxe de base
La syntaxe simplifie dune boucle est la suivante : <BOUCLEn(TYPE){critre1}{critre2}...{critrex}> * Code HTML + balises SPIP </BOUCLEn> On a vu, dans lexplication sur les boucles et les balises, que le Code HTML + balises SPIP se rptait autant de fois que la boucle obtenait dlments tirs de la base de donnes (cest--dire une fois, plusieurs fois, ou zro fois). La ligne importante, ici, est : <BOUCLEn(TYPE){critre1}{critre2}...{critrex}> - Llment BOUCLE est lordre indiquant quil sagit dune boucle SPIP ; on ne peut donc pas le modifier ; dit autrement, toutes les boucles de SPIP commencent par linstruction BOUCLE. - Llment n est le nom ou le numro de la boucle, librement choisi par le webmestre pour chaque boucle quil utilise (attention : on prendra soin de nommer ses boucles avec uniquement des caractres alphanumriques non accentus et le tiret-bas underscore ; cest--dire des caractres de la classe [a-zA-Z0-9_]. On verra plus loin quil est possible (cest mme tout lintrt de la manuvre) dutiliser plusieurs boucles dans un mme squelette : les nommer est donc indispensable pour les identifier. Si vous dcidez de numroter vos boucles, la syntaxe devient par exemple (pour la boucle 5) :
<BOUCLE5...> ... </BOUCLE5>

Si vous dcidez de donner un nom vos boucles (cest gnralement plus pratique, votre code est plus lisible), il faut imprativement faire prcder ce nom par le symbole _ (que lon appelle habituellement underscore). Par exemple :
<BOUCLE_sousrubriques...> ... </BOUCLE_sousrubriques>

- Llment (TYPE) est primordial : il indique quel type dlments on veut rcuprer. La syntaxe est importante : le TYPE est indiqu entre parenthses (sans espaces), en majuscules, et ce TYPE doit correspondre obligatoirement lun des types prvus dans SPIP (quon trouvera dans la prsente documentation) : ARTICLES, RUBRIQUES, AUTEURS, BREVES, etc. Pour lexemple prcdent, on aurait donc :
<BOUCLE_sousrubriques(RUBRIQUES)...> ... </BOUCLE_sousrubriques>

Manuel de rfrence des boucles et balises

11/186

- Les critres {critre1}{critre2}...{critrex} indiquent la fois selon quels critres on veut slectionner les lments de la base de donnes (afficher les sous-rubriques incluses dans cette rubrique, afficher les autres rubriques installes au mme niveau hirarchique que la prsente rubrique...), et la faon dont on va classer ou slectionner les lments (classer les articles selon leur date, selon leur titre... afficher uniquement les 3 premiers articles, afficher la moiti des articles...). Comme on peut combiner les critres, on peut trs aisment fabriquer des requtes trs puissantes, du genre afficher la liste des 5 articles les plus rcents crits par cet auteur . Les critres sont entre acolades ; ils peuvent tre spars les uns des autres par un espace. Exemple :
<BOUCLE_meme_auteur(ARTICLES) {id_auteur} {par date}{inverse} {0,5}> ... </BOUCLE_meme_auteur>

Les diffrents critres et leur syntaxe seront explicits par la suite, pour chaque type de boucle (certains critres fonctionnent pour tous les types de boucles, dautres sont spcifiques certaines boucles).

Syntaxe complte
Le syntaxe indique prcdemment peut tre complte par des lments conditionnels. En effet, la boucle prcdente affiche successivement les lments contenus lintrieur de la boucle. SPIP permet de plus dindiquer ce quon affiche avant et aprs la boucle au cas o elle contient un ou plusieurs rsultats, et ce quon affiche sil ny a aucun lment. Cela donne :
<Bn> * Code HTML optionnel avant <BOUCLEn(TYPE){critre1}{critre2}...{critrex}> * Code HTML + balises SPIP </BOUCLEn> * Code HTML optionnel aprs </Bn> * Code HTML alternatif <//Bn>

Le code optionnel avant (prcd de <Bn>) nest affich que si la boucle contient au moins une rponse. Il est affich avant les rsultats de la boucle. Le code optionnel aprs (termin par </Bn>) nest affich que si la boucle contient au moins une rponse. Il est affich aprs les rsultats de la boucle. Le code alternatif (termin par <//Bn>) est affich la place de la boucle (et donc galement la place des codes optionnels avant et aprs) si la boucle naffiche rien (soit parce que la base de donnes na fourni aucune rponse, soit parce que le code utilisant ces rponses dans la boucle naffiche rien).

Manuel de rfrence des boucles et balises

12/186

Par exemple, le code :


<B1> Cette rubrique contient les lments suivants: <ul> <BOUCLE1(ARTICLES){id_rubrique}> <li>#TITRE</li> </BOUCLE1> </ul> </B1> Cette rubrique ne contient pas d'article. <//B1>

donne les rsultats suivants : - sil y a un seul article :


Cette rubrique contient les lments suivants: <ul> <li>Titre de l'article</li> </ul>

- sil y a plusieurs articles :


Cette rubrique <ul> <li>Titre de <li>Titre de ... <li>Titre du </ul> contient les lments suivants: l'article 1</li> l'article 2</li> dernier article</li>

- sil ny a aucun article :


Cette rubrique ne contient pas d'article.

Des critres denvironnement en cascade


Chaque boucle effectue la slection des lments tirs de la base de donnes en fonction de critres. Certains de ces critres correspondent lenvironnement dans lequel se trouve la boucle. Par exemple : si on prvoit une boucle du genre Afficher les articles inclus dans cette rubrique , il faut savoir de quelle rubrique il sagit. Cest ce que lon nomme lenvironnement. - Lenvironnement fourni par lURL Lorsque lon visite une page dun site SPIP, son adresse contient gnralement une variable. Par exemple : spip.php?rubrique15 Cette variable dfinit donc un premier environnement : la boucle Afficher les articles inclus dans cette rubrique doit alors tre comprise comme Afficher les articles de la rubrique 15 .

Manuel de rfrence des boucles et balises

13/186

Clairement, avec le mme code de squelette, si on appelle ladresse : spip.php?rubrique7, linterprtation de cette boucle deviendra Afficher les articles de la rubrique 7 . - Lenvironnement fourni par les autres boucles lintrieur dune boucle, lenvironnement est modifi par chaque lment de la boucle. En plaant des boucles les unes lintrieur des autres, on hrite ainsi denvironnements imbriqus les uns dans les autres. Ainsi, dans la structure suivante :
<BOUCLE_articles: afficher les articles de cette rubrique> Afficher le titre de l'article <BOUCLE_auteurs: afficher les auteurs de cet article> Nom de l'auteur </BOUCLE_auteurs> </BOUCLE_articles>

On doit comprendre que : - la premire boucle (BOUCLE_articles) affiche les articles en fonction de la rubrique, selon lenvironnement fournit par lURL (id_rubrique=15 par exemple) ; - dans cette boucle, on obtient un ou plusieurs articles ; - lintrieur de chacun de ces articles, on a un environnement diffrent (celui de larticle, cest--dire, par exemple, id_article=199) ; - la seconde boucle (BOUCLE_auteurs), qui est installe lintrieur de la premire boucle, dpend pour chacune de ses excutions successives (elle est excute pour chaque article de la premire boucle) : afficher les auteurs de cet article devient successivement afficher les auteurs du premier article , du deuxime article et ainsi de suite. On voit que, par limbrication de boucles successives, on obtient diffrentes boucles, incluses les unes dans les autres, qui dpendent du rsultat des boucles dans lesquelles elles sont situes. Et finalement, la toute premire boucle (celle qui contient toutes les autres) dpend dun paramtre fix dans ladresse de la page.

Boucles incluses et boucles successives


Si lon peut inclure des boucles les unes lintrieur des autres (chaque boucle incluse dpendant alors du rsultat de la boucle lintrieur de laquelle elle est installe), on peut tout aussi bien installer des boucles les unes la suite des autres ; des boucles successives ninfluent pas les unes sur les autres. Par exemple, la page dune rubrique est typiquement constitue des lments suivants :
<BOUCLE_rubrique(RUBRIQUES){id_rubrique}> <ul>Titre de la rubrique <BOUCLE_articles(ARTICLES){id_rubrique}> <li> Titre de l'article</li> </BOUCLE_articles> <BOUCLE_sous_rubriques(RUBRIQUES){id_rubrique}> <li> Titre de la sous-rubrique </li> </BOUCLE_sous_rubriques> </ul> </BOUCLE_rubrique> <ul>Il n'y a pas de rubrique cette adresse.</ul> <//B_rubrique>

Manuel de rfrence des boucles et balises

14/186

La premire boucle (BOUCLE_rubrique) dpend de la variable passe dans lURL de la page (id_rubrique=15 par exemple). Les boucles suivantes (BOUCLE_articles et BOUCLE_sous_rubriques) sont installes lintrieur de la premire boucle. Ainsi, sil nexiste pas de rubrique 15, la premire boucle ne donne aucun rsultat (le code alternatif Il ny a pas de rubrique... est affich), et donc les deux boucles incluses sont totalement ignores. Mais sil existe une rubrique 15, ces deux sous-boucles seront analyses. On constate galement que ces deux boucles se prsentent lune aprs lautre. Ainsi, elles fonctionnent en fonction de la premire boucle, mais indpendamment lune de lautre. Sil ny a pas darticles dans la rubrique 15 (BOUCLE_articles), on affichera tout de mme la liste des sous-rubriques de la rubrique 15 (BOUCLE_sous_rubriques) ; et inversement.

Compteurs
Deux balises permettent de compter les rsultats dans les boucles.

- #TOTAL_BOUCLE retourne le nombre total de rsultats affichs par la boucle. On peut lutiliser dans la boucle, dans ses parties optionnelles avant et aprs ou mme dans la partie alternative aprs la boucle. Par exemple, pour afficher le nombre de documents associs un article :
<BOUCLE_art(ARTICLES){id_article}> <BOUCLE_doc(DOCUMENTS) {id_article}> </BOUCLE_doc> [il y a (#TOTAL_BOUCLE) document(s).] <//B_doc> </BOUCLE_art>

Attention : si la partie centrale de la boucle ne retourne rien (cest le cas avec la boucle <BOUCLE_doc> ci-dessus, qui ne sert qu compter le nombre de rsultats), le #TOTAL_BOUCLE ne pourra tre affich que dans la partie alternative aprs de la boucle (<//B_doc>).

- #COMPTEUR_BOUCLE retourne le numro de litration actuelle de la boucle. On peut par exemple lutiliser pour numroter des rsultats :
<BOUCLE_art(ARTICLES) {par date} {inverse} {0,10}> #COMPTEUR_BOUCLE - #TITRE<br> </BOUCLE_art>

Manuel de rfrence des boucles et balises

15/186

La syntaxe des balises SPIP


Mai 2001 maj : octobre

2010

Chaque type de boucle permet de slectionner des lments de la base de donnes de SPIP : des articles, des rubriques, des brves, etc. Chacun de ces lments est lui-mme constitu dlments prcis : un titre, une date, un texte, etc. lintrieur dune boucle, il faut donc pouvoir indiquer quel endroit du code HTML on place tel ou tel de ces lments prcis. Pour cela, on va utiliser des balises SPIP.

Fonctionnement simplifi
Une balise SPIP se place lintrieur dune boucle (puisquil faut savoir si lon veut rcuprer un lment dun article, dune rubrique, etc.). Le nom de ces balises est gnralement simple, et nous fournirons, pour chaque type de boucle, la liste complte des balises que lon peut utiliser. Une balise est toujours prcde du signe dise (#). Par exemple, affichons une liste de noms darticles :
<BOUCLE_articles(ARTICLES){id_rubrique}> #TITRE<br /> </BOUCLE_articles>

Lorsque la boucle sera excute, la balise SPIP #TITRE sera chaque fois remplace par le titre de larticle en question :
Titre de l'article 1<br /> Titre de l'article 2<br /> ... Titre du dernier article<br />

Rien de bien compliqu : on se contente dindiquer lintrieur du code HTML le nom de llment dsir, et celui-ci est remplac par le contenu tir de la base de donnes.

Codes optionnels
Dans la pratique, un lment de contenu est souvent accompagn de code HTML qui ne doit safficher que si cet lment existe, faute de quoi la mise en page devient imprcise. Par exemple : il existe une balise SPIP pour indiquer le surtitre dun article. Or de nombreux articles nont pas de surtitre. Compltons lexemple prcdent :
<BOUCLE_articles(ARTICLES){id_rubrique}> #SURTITRE<br /> #TITRE<br /> </BOUCLE_articles>

Manuel de rfrence des boucles et balises

16/186

qui, classiquement, nous donne une liste darticles, avec dsormais lindication du titre et du surtitre de chaque article. Mais que se passe-t-il si larticle na pas de surtitre ? On obtient le code : <br /> , cest--dire une ligne blanche (un retour chariot). Ce que nous devons faire : nafficher le code <br /> que si un surtitre existe pour larticle. La syntaxe de la balise SPIP devient alors :
[ texte optionnel avant (#BALISE) texte optionnel aprs ]

La balise qui dtermine loption est place entre parenthses, et lensemble du texte conditionnel entre crochets. Le texte optionnel avant et le texte optionnel aprs ne saffichent que sil existe, dans la base de donnes, un lment correspondant cette balise. Notre exemple devient :
<BOUCLE_articles(ARTICLES){id_rubrique}> [(#SURTITRE)<br />] #TITRE<br /> </BOUCLE_articles>

On obtient alors le rsultat recherch : sil existe un surtitre pour cet article, il est affich et suivi du <br /> ; sil nexiste pas de surtitre, mme le <br /> est occult.

attention : cet affichage conditionnel ne fonctionne pas avec les balises dynamiques (par exemple #URL_LOGOUT).

Utilisations avances On peut imbriquer des balises tendues les unes dans les autres. Ainsi, si dans notre exemple on voulait nafficher le logo de larticle que si le surtitre est dfini, on pourrait crire :
<BOUCLE_articles(ARTICLES){id_rubrique}> [[(#LOGO_ARTICLE)<br />](#SURTITRE)<br />] </BOUCLE_articles>

Note : On ne peut jamais mettre une boucle dans le code optionnel dune balise. Mais si on veut faire nafficher une boucle quen fonction dune certaine balise, on peut utiliser <INCLURE{...}> lintrieur dun code optionnel.

Balises non ambigus


Quand on imbrique des boucles les unes dans les autres, il peut arriver que deux boucles aient des balises homonymes. Par exemple, dans le code suivant :
<BOUCLE_rubriques(RUBRIQUES){id_rubrique}> <BOUCLE_articles(ARTICLES){id_rubrique}> #TITRE </BOUCLE_articles> </BOUCLE_rubriques>

Manuel de rfrence des boucles et balises

17/186

la balise #TITRE dsigne le titre dun article. Ainsi, si on voulait afficher le titre de la rubrique lintrieur de la boucle _articles, on ne pourrait pas utiliser #TITRE. On peut appeler une balise homonyme de lune des boucles englobantes en explicitant le nom de la boucle laquelle la balise appartient. Il faut alors spcifier le nom de la boucle entre le # et le nom de la balise. On crira alors la balise #BALISE de la boucle _boucle1 de la faon suivante : #_boucle:BALISE. Par exemple :
<BOUCLE_rubriques(RUBRIQUES){id_rubrique}> <BOUCLE_articles(ARTICLES){id_rubrique}> #_rubriques:TITRE > #TITRE </BOUCLE_articles> </BOUCLE_rubriques>

affichera le titre de la rubrique, puis le titre de larticle : la balise #TITRE pour la boucle _rubriques devient #_rubriques:TITRE pour ne pas tre confondue avec la balise #TITRE de la boucle _articles.

Filtrer les rsultats


Il est frquent de vouloir modifier un lment tir de la base de donnes, soit pour obtenir un affichage diffrent (par exemple, afficher le titre entirement en majuscules), ou pour rcuprer une valeur dcoulant de cet lment (par exemple, afficher le jour de la semaine correspondant une date). Dans SPIP, on peut directement appliquer des filtres aux lments rcuprs de la base de donnes, en les indiquant dans la syntaxe des balises SPIP, qui devient :
[ option avant (#BALISE|filtre1|filtre2|...|filtren) option aprs ]

La syntaxe est donc de faire suivre le nom de la balise, entre les parenthses, par les filtres succesifs, spars par une barre verticale (nomme habituellement pipe). - attention : lapplication de filtres ne fonctionne pas sur les balises dynamiques. Voici quelques filtres fournis par SPIP : - majuscules, passe le texte en majuscules (plus puissant que la fonction de PHP correspondante, qui ne fonctionne pas correctement avec les caractres accentus) ; par exemple :
[(#TITRE|majuscules)]

- justifier, affiche le texte en justification totale (cest--dire <P align=justify>) ; par exemple :
[(#TEXTE|justifier)]

La prsente documentation consacre un article aux diffrents filtres livrs avec SPIP.
1

Prcision : noubliez pas le cas chant, lunderscore _ initial dans le nom de la boucle si celui ci ne commence pas par un numro.

Manuel de rfrence des boucles et balises

18/186

Court-circuiter le traitement par SPIP


SPIP applique un traitement typographique tous les textes tirs de la base de donnes. En particulier, il place des espaces inscables avant certains symboles (point-virgule, point dinterrogation, etc.), et analyse des raccourcis de mise en page. Dans certains cas, vous pouvez avoir besoin de court-circuiter ce traitement, afin de rcuprer directement le texte brut tel quil est plac dans la base de donnes. Pour cela, il suffit dajouter une astrisque (*) la suite de la balise SPIP. Ce qui donne :
[ option avant (#BALISE*|filtre1|filtre2|...|filtren) option aprs ]

(voir #BALISE* et #BALISE**)

Les paramtres des balises


Certaines balises2 acceptent des paramtres. On passera alors une liste de paramtres entre accolades { et } avec des virgules , pour sparer chaque paramtre. Par exemple : #ENV{lang,fr}. Un paramtre peut tre une constante ou une autre balise. Seulement les balises de forme simple peuvent tre passes en paramtres (i.e. pas de code optionnel ou de filtres). On peut mettre les paramtres entre guillemets simples '...' si lon ne veut pas quils soient interprts par SPIP.

#ENV et #EXPOSER

Manuel de rfrence des boucles et balises

19/186

La boucle ARTICLES
Mai 2001 maj : mars 2010

Une boucle darticles se code en plaant entre parenthses ARTICLES (avec un s ) :


<BOUCLEn(ARTICLES){critres...}>

Les lments contenus dans une telle boucle sont des articles.

Les critres de slection


On utilisera lun ou autre des critres suivants pour indiquer comment on slectionne les lments. - {id_article} slectionne larticle dont lidentifiant est id_article. Comme lidentifiant de chaque article est unique, ce critre ne retourne quune ou zro rponse. - {id_rubrique} slectionne les articles contenus dans la rubrique dont lidentifiant est id_rubrique. - {id_secteur} slectionne les articles dans ce secteur (un secteur est une rubrique qui ne dpend daucune autre rubrique, cest--dire situe la racine du site). - {branche} slectionne lensemble des articles de la rubrique ET de ses sous-rubriques. (Cest une sorte dextension du critre {id_secteur}. Toutefois, linverse de {id_secteur=2}, il nest pas possible dappeler directement une branche en faisant par exemple {branche=2} : techniquement parlant, il faut que la rubrique en question figure dans le contexte courant. Ce critre est utiliser avec parcimonie : si votre site est bien structur, vous ne devriez pas en avoir besoin, sauf dans des cas trs particuliers.) - {id_auteur} slectionne les articles correspondant cet identifiant dauteur (utile pour indiquer la liste des articles crits par un auteur). - {id_mot} slectionne les articles correspondant cet identifiant de mot-cl (utile pour indiquer la liste des articles traitant dun sujet donn). - {titre_mot=xxxx}, ou {type_mot=yyyy} slectionne respectivement les articles lis au mot-cl dont le nom est xxxx , ou lis des mots-cls du groupe de mots-cls yyyy . Si lon donne plusieurs critres {titre_mot=xxxx} (ou plusieurs {type_mot=yyyy}), on slectionnera ceux qui auront tous ces mots la fois. - {id_groupe=zzzz} permet de slectionner les articles lis un groupe de mots-cls ; principe identique au {type_mot} prcdent, mais puisque lon travaille avec un identifiant (numro du groupe), la syntaxe sera plus propre . [Nota : Ce critre nest pas (en ltat actuel du dveloppement de SPIP) cumulable avec le prcdent {type_mot=yyyy}] - {lang} slectionne les articles de la langue demande dans ladresse de la page.

Manuel de rfrence des boucles et balises

20/186

- {traduction} slectionne les traductions de larticle courant en diffrentes langues. - {origine_traduction} slectionne les articles qui servent de base des versions traduites (les articles "originaux"). Voir sur programmer.spip.org pour des exemples - Les critres {date} (ou {date=...} ou {date==...}) permettent de slectionner un article en fonction de la date passe dans lURL. - {recherche} slectionne les articles correspondant aux mots indiqus dans linterface de recherche (moteur de recherche incorpor SPIP). Le critre {tout} permet de slectionner les donnes dune table comme si aucun autre critre restrictif ntait appliqu. Ainsi son utilisation relve-telle plus de laide-mmoire pour le webmestre puisque lon obtient le mme rsultat en nindiquant aucun critre.

Le statut de larticle
Comme toutes les boucles de SPIP, une boucle ARTICLES ne retourne que des articles publis ; dans le cas o le site est rgl de manire ne pas publier les articles post-dats , un autre test est fait sur la date de larticle. Il est possible de dbrayer ce systme et dafficher les articles en cours de rdaction , proposs la publication ou refuss grce au critre {statut} :

slectionne les articles en fonction de leur statut de publication : {statut=prepa} slectionne les articles en cours de rdaction dans lespace priv ; {statut=prop} slectionne les articles proposs la publication ; {statut=publie} slectionne les articles publis sur le site, y compris les articles post-dats ; {statut=refuse} slectionne les articles qui ont t refuss la publication ; {statut=poubelle} slectionne les articles qui ont t mis la poubelle.
{statut IN prop,prepa,publie,refuse,poubelle}

Les critres daffichage


Une fois fix lun des critres ci-dessus, on pourra ajouter les critres suivants pour restreindre le nombre dlments affichs. Les critres communs toutes les boucles sappliquent videmment.

Les balises de cette boucle


Les balises tires de la base de donnes Les balises suivantes correspondent aux lments directement tirs de la base de donnes. Vous pouvez les utiliser galement en tant que critre de classement (par exemple : {par date} ou {par titre}).

Manuel de rfrence des boucles et balises

21/186

- #ID_ARTICLE affiche lidentifiant unique de larticle. Utile pour fabriquer des liens hypertextes non prvus (par exemple vers une page Afficher au format impression ). - #SURTITRE affiche le surtitre. - #TITRE affiche le titre de larticle. - #SOUSTITRE affiche le soustitre. - #DESCRIPTIF affiche le descriptif. - #CHAPO affiche le texte dintroduction (chapeau). - #TEXTE affiche le texte principal de larticle. - #PS affiche le post-scriptum. - Les balises de dates : #DATE, #DATE_REDAC, #DATE_MODIF sont explicites dans la documentation sur La gestion des dates . - #ID_RUBRIQUE affiche lidentifiant de la rubrique dont dpend larticle. - #ID_SECTEUR affiche lidentifiant du secteur dont dpend larticle (le secteur tant la rubrique parente situe la racine du site). - #NOM_SITE et #URL_SITE affichent le nom et lurl du lien hypertexte de larticle (si vous avez activ cette option). - #VISITES affiche le nombre total de visites sur cet article. - #POPULARITE affiche le pourcentage de popularit de cet article ; voir la documentation La popularit des articles . - #LANG affiche la langue de cet article. Les balises calcules par SPIP Les lments suivants sont calculs par SPIP (Ils ne peuvent pas tre utiliss comme critre de classement). - #URL_ARTICLE affiche lURL de la page de larticle. - #NOTES affiche les notes de bas de page (calcules partir de lanalyse du texte). - #INTRODUCTION affiche le descriptif de larticle, sinon affiche les 600 premiers caractres du dbut de larticle (chapeau puis texte). - #LESAUTEURS affiche les auteurs de cet article, avec lien vers leur propre page publique (afin de pouvoir directement leur crire ou de consulter la liste des articles quils ont publi). Cela vite de crer une boucle AUTEURS pour obtenir le mme rsultat.

Manuel de rfrence des boucles et balises

22/186

- #PETITION affiche le texte de la ptition si elle existe. Si elle existe mais que le texte est vide, retourne un espace (une chane non vide sans incidence dans une page html). - #FORMULAIRE_SIGNATURE fabrique et affiche le formulaire permettant de signer la ptition associe cet article. - #FORMULAIRE_FORUM fabrique et affiche le formulaire permettant de poster un message rpondant cet article. Pour en savoir plus, voir aussi Les formulaires . - #PARAMETRES_FORUM fabrique et affiche la liste des variables exploites par le formulaire permettant de rpondre cet article. Par exemple :
[<a href="spip.php?page=forum&(#PARAMETRES_FORUM)">Rpondre cet article</a>]

On peut lui passer un paramtre spcifiant ladresse de retour aprs avoir post le message. Par exemple : <a href="spip.php?page=forum&(#PARAMETRES_FORUM{#SELF})"> Rpondre cet article</a> renverra le visiteur sur la page actuelle une fois que le message a t valid. Les logos - #LOGO_ARTICLE affiche le logo de larticle, ventuellement avec la gestion du survol. - #LOGO_RUBRIQUE affiche le logo de la rubrique de larticle. - #LOGO_ARTICLE_RUBRIQUE affiche le logo de larticle, ventuellement remplac par le logo de la rubrique sil nexiste pas de logo spcifique larticle. Les logos sinstallent de la manire suivante : [(#LOGO_ARTICLE|alignement|adresse)] Lalignement peut tre left ou right. Ladresse est lURL de destination du lien de ce logo (par exemple #URL_ARTICLE). Si lon nindique pas dadresse, le bouton nest pas cliquable. Si lon veut rcuprer directement le nom du fichier du logo (alors que les balises prcdentes fabriquent le code HTML complet pour insrer limage dans la page), par exemple pour afficher une image en fond de tableau, on utilisera le filtre |fichier comme suit :
[(#LOGO_ARTICLE|fichier)]

Par ailleurs deux balises permettent de rcuprer un seul des deux logos : - #LOGO_ARTICLE_NORMAL affiche le logo sans survol ; - #LOGO_ARTICLE_SURVOL affiche le logo de survol.

Manuel de rfrence des boucles et balises

23/186

La boucle RUBRIQUES
Mai 2001 maj : aot

2010

La boucle RUBRIQUES retourne une liste de... rubriques (tonnant, non ?)


<BOUCLEn(RUBRIQUES){critres...}>

Remarque. Une boucle RUBRIQUES naffiche que des rubriques actives , cest--dire contenant des articles publis, des documents joints, des sites publis ou des sousrubriques elles-mmes actives. De cette faon, on vite de se trouver dans des rubriques culs de sac noffrant aucun lment de navigation. Il est possible de forcer laffichage des rubriques vides (voir ci-dessous, le critre {tout}).

Les critres de slection


On utilisera lun ou autre des critres suivants pour indiquer comment on slectionne les lments. - {id_rubrique} slectionne la rubrique dont lidentifiant est id_rubrique. Comme lidentifiant de chaque rubrique est unique, ce critre retourne une ou zro rponse. - {id_secteur} slectionne les rubriques de ce secteur. (On peut galement, par extension, utiliser le critre {branche} dcrit dans la boucle ARTICLES). - {id_parent} slectionne la liste des rubriques contenues dans une rubrique. - {racine} slectionne la liste des secteurs (rigoureusement identique {id_parent=0}). - {id_enfant} slectionne la rubrique qui contient la rubrique (une seule rponse ; ou zro rponse si la prsente rubrique est situe la racine du site). - {meme_parent} slectionne la liste des rubriques dpendant de la mme rubrique que la rubrique en cours. Permet dafficher les rubriques surs qui se trouvent au mme niveau dans la hirarchie. - Les rubriques peuvent tre lies des mots-cls. Les critres de mots-cls peuvent donc tre utiliss dans les boucles (RUBRIQUES) :

rcuprent les rubriques lies au mot dont le numro est id_mot ou dont le titre est titre_mot ; {id_groupe}, {type_mot=yyyy} rcuprent les rubriques lies des mots du groupe id_groupe, ou du groupe dont le titre est type_mot.

{id_mot}, {titre_mot=xxx}

- {recherche} slectionne les rubriques correspondant aux mots indiqus dans linterface de recherche (moteur de recherche incorpor SPIP). Voir la page consacre au moteur de recherche. - {lang} slectionne les rubriques de la langue demande dans ladresse de la page.

Manuel de rfrence des boucles et balises

24/186

- {tout} slectionne toutes les rubriques, cest--dire : les rubriques vides en plus des rubriques contenant des lments publis. On rservera ce choix des besoins trs spcifiques ; en effet, par dfaut, SPIP naffiche pas sur le site public les rubriques qui ne contiennent aucun lment actif, afin de garantir que le site ne propose pas de culs de sac (navigation vers des pages ne proposant aucun contenu).

Les critres daffichage


Une fois fix lun des critres ci-dessus, on pourra ajouter les critres suivants pour restreindre le nombre dlments affichs. - Les critres communs toutes les boucles sappliquent videmment. - {exclus} permet dexclure du rsultat la rubrique dans laquelle on se trouve dj (utile avec meme_parent).

Les balises de cette boucle


Les balises tires de la base de donnes Les balises suivantes correspondent aux lments directement tirs de la base de donnes. Vous pouvez les utiliser galement en tant que critre de classement (gnralement : {par titre}). - #ID_RUBRIQUE affiche lidentifiant unique de la rubrique. - #TITRE affiche le titre de la rubrique. - #DESCRIPTIF affiche le descriptif. - #TEXTE affiche le texte principal de la rubrique. - #ID_SECTEUR affiche lidentifiant du secteur dont dpend la rubrique (le secteur tant la rubrique situe la racine du site). - #ID_PARENT affiche lidentifiant de la rubrique qui contient la rubrique actuelle. Si la rubrique est situe la racine du site, retourne 0. - #LANG affiche la langue de cette rubrique. Les balises calcules par SPIP Les lments suivants sont calculs par SPIP. (Ils ne peuvent pas tre utiliss comme critre de classement.) - #NOTES affiche les notes de bas de page (calcules partir de lanalyse du texte). - #INTRODUCTION affiche les 600 premiers caractres du texte, les enrichissements typographiques (gras, italique) sont supprims. - #URL_RUBRIQUE affiche lURL de la page de la rubrique.

Manuel de rfrence des boucles et balises

25/186

- #DATE affiche la date de la dernire publication effectue dans la rubrique et/ou ses sousrubriques (articles, brves...). - #FORMULAIRE_FORUM fabrique et affiche le formulaire permettant de poster un message rpondant cette rubrique. Pour en savoir plus, voir aussi Les formulaires . - #PARAMETRES_FORUM fabrique la liste des variables exploites par linterface du formulaire permettant de rpondre cette rubrique. Par exemple :
[<a href="spip.php?page=forum&(#PARAMETRES_FORUM)"> Rpondre cette rubrique</a>]

On peut lui passer un paramtre spcifiant ladresse de retour aprs avoir post le message. Par exemple :
<a href="spip.php?page=forum&(#PARAMETRES_FORUM{#SELF})">Rpondre cette rubrique</a>

renverra le visiteur sur la page actuelle une fois que le message a t valid. - #FORMULAIRE_SITE fabrique et affiche un formulaire permettant aux visiteurs du site de proposer des rfrencements de sites. Ces sites apparatront comme proposs dans lespace priv, en attendant une validation par les administrateurs. Ce formulaire ne saffiche que si vous avez activ loption Grer un annuaire de sites dans la Configuration sur site dans lespace priv, et si vous avez rgl Qui peut proposer des sites rfrencs sur les visiteurs du site public . Le logo - #LOGO_RUBRIQUE le logo de la rubrique, ventuellement avec la gestion du survol. Sil ny a pas de logo pour cette rubrique, SPIP va automatiquement chercher sil existe un logo pour la rubrique dont elle dpend, et ainsi de suite de manire rcursive. Le logo sinstalle de la manire suivante :
[(#LOGO_RUBRIQUE|alignement|adresse)]

O :

alignement est lalignement du logo (left ou right) adresse est une url si on veut ajouter un lien directement sur le logo (par exemple #URL_RUBRIQUE).

#LOGO_RUBRIQUE_NORMAL

affiche le logo sans survol ; #LOGO_RUBRIQUE_SURVOL affiche le logo de survol : ces deux balises permettent par exemple, quand on est dans une rubrique, de grer un logo avec survol pour les liens vers les autres rubriques, et de laisser le logo de survol seul dans la rubrique active.

Manuel de rfrence des boucles et balises

26/186

Depuis SPIP 2.1 les filtres de logos ont la mme syntaxe que tous les autres. Un seul pipe suffit :
[(#LOGO_XXX|filtre)]

Mais : - #LOGO_XXX** renvoie le fichier - #LOGO_XXX{top/left/right/center/bottom} gnre un alignement - #LOGO_XXX{url} gnre un logo qui pointe vers lurl.

Manuel de rfrence des boucles et balises

27/186

La boucle BREVES
Mai 2001 maj : aot

2010

La boucle BREVES, comme son nom lindique, retourne une liste de brves.
<BOUCLEn(BREVES){critres...}>

Les critres de slection


On utilisera lun ou autre des critres suivants pour indiquer comment on slectionne les lments. - {tout} : les brves sont slectionnes dans lintgralit du site. - {id_breve} slectionne la brve dont lidentifiant est id_breve. Comme lidentifiant de chaque brve est unique, ce critre retourne une ou zro rponse. - {id_rubrique} slectionne toutes les brves contenues dans la rubrique en cours. - {id_mot} slectionne toutes les brves lies au mot-cl en cours ( lintrieur dune boucle de type MOTS). - {titre_mot=xxxx}, ou {type_mot=yyyy} slectionne les brves lies au mot-cl dont le nom est xxxx , ou lies des mots-cls du groupe de mots-cls yyyy . Attention, on ne peut pas utiliser plusieurs critres {titre_mot=xxxx} ou {type_mot=yyyy} dans une mme boucle. - {id_groupe=zzzz} permet de slectionner les brves lies un groupe de mots-cls ; principe identique au {type_mot} prcdent, mais puisque lon travaille avec un identifiant (numro du groupe), la syntaxe sera plus propre . - {lang} slectionne les brves de la langue demande dans ladresse de la page. - {recherche} slectionne les brves correspondant aux mots indiqus dans linterface de recherche (moteur de recherche incorpor SPIP). Voir la page consacre au moteur de recherche.

Les critres daffichage


Les critres communs toutes les boucles sappliquent.

Les balises de cette boucle


Les balises tires de la base de donnes

Manuel de rfrence des boucles et balises

28/186

Les balises suivantes correspondent aux lments directement tirs de la base de donnes. Vous pouvez les utiliser galement en tant que critre de classement (gnralement : {par titre}). - #ID_BREVE affiche lidentifiant unique de la brve. - #TITRE affiche le titre de la brve. - #DATE affiche la date de publication de la brve. - #TEXTE affiche le texte de la brve. - #NOM_SITE affiche le nom du site indiqu en rfrences. - #URL_SITE affiche ladresse (URL) du site indiqu en rfrences. - #ID_RUBRIQUE affiche lidentifiant de la rubrique dont dpend cette brve. - #LANG affiche la langue de cette brve. Par dfaut, la langue dune brve est la langue du secteur dans lequel elle se trouve. Les balises calcules par SPIP Les lments suivants sont calculs par SPIP (Ils ne peuvent pas tre utiliss comme critre de classement). - #NOTES affiche les notes de bas de page (calcules partir de lanalyse du texte). - #INTRODUCTION affiche les 600 premiers caractres du texte, les enrichissements typographiques (gras, italique) sont supprims. - #URL_BREVE affiche lURL de la page de la brve. - #FORMULAIRE_FORUM fabrique et affiche le formulaire permettant de poster un message rpondant cette brve. Pour en savoir plus, voir aussi Les formulaires . - #PARAMETRES_FORUM fabrique la liste des variables exploites par linterface du formulaire permettant de rpondre cette brve : [<a href="spip.php?page=forum&(#PARAMETRES_FORUM)"> Rpondre cette brve</a>] On peut lui passer un paramtre spcifiant ladresse de retour aprs avoir post le message. Par exemple : <a
href="spip.php?page=forum&(#PARAMETRES_FORUM{#SELF})">Rpondre cette brve</a> renverra le visiteur sur la page actuelle une fois que le message a t valid.

Le logo - #LOGO_BREVE affiche le logo de la brve, ventuellement avec la gestion du survol. Le logo sinstalle de la manire suivante : [(#LOGO_BREVE|alignement|adresse)] Manuel de rfrence des boucles et balises 29/186

- #LOGO_BREVE_RUBRIQUE affiche, si il existe, le logo de la brve ; si ce logo na pas t attribu, SPIP affiche le logo de la rubrique. Depuis SPIP 2.1 les filtres de logos ont la mme syntaxe que tous les autres. Un seul pipe suffit :
[(#LOGO_XXX|filtre)]

Mais : - #LOGO_XXX** renvoie le fichier - #LOGO_XXX{top/left/right/center/bottom} gnre un alignement - #LOGO_XXX{url} gnre un logo qui pointe vers lurl. .

Manuel de rfrence des boucles et balises

30/186

La boucle AUTEURS
Mai 2001 maj : Octobre 2009

La boucle AUTEURS, comme son nom lindique, retourne une liste dauteurs.
<BOUCLEn(AUTEURS){critres...}>

Si lon ne prcise pas de critre de slection, la boucle retournera tous les auteurs ayant un article publi.

Les critres de slection


On utilisera lun ou autre des critres suivants pour indiquer comment on slectionne les lments. - {tout} : les auteurs sont slectionns, quils aient crit un article ou non. - {id_auteur} retourne lauteur dont lidentifiant est id_auteur. Comme lidentifiant de chaque auteur est unique, ce critre retourne une ou zro rponse. - {id_article} retourne tous les auteurs de cet article. - {lang} slectionne les auteurs qui ont choisi, dans lespace priv, la langue demande dans ladresse de la page. Si un auteur ne sest jamais connect dans lespace priv, il ne sera pas trouv par ce critre. - {lang_select} Par dfaut, une boucle AUTEURS affiche les balises et les chanes localises dans la langue du contexte (de la boucle englobante ou de lurl). Si on utilise ce critre, ces informations seront localises dans la langue choisie par lauteur.

Les critres daffichage


Les critres communs toutes les boucles sappliquent.

Les balises de cette boucle


Les balises tires de la base de donnes Les balises suivantes correspondent aux lments directement tirs de la base de donnes. Vous pouvez les utiliser galement en tant que critre de classement (gnralement : {par nom}). - #ID_AUTEUR affiche lidentifiant unique de lauteur. - #NOM affiche le nom de lauteur. - #BIO affiche la biographie de lauteur. - #EMAIL affiche son adresse email.

Manuel de rfrence des boucles et balises

31/186

- #NOM_SITE affiche le nom de son site Web. - #URL_SITE affiche ladresse (URL) de son site. - #PGP affiche sa cl publique pour PGP. - #LANG affiche la langue de lauteur (cest--dire celle quil a choisie dans lespace priv). Les balises calcules par SPIP - #FORMULAIRE_ECRIRE_AUTEUR fabrique et affiche un formulaire permettant dcrire lauteur. Il faut que le serveur hbergeant le site accepte denvoyer des mails. Ce systme permet de ne pas divulguer ladresse email de lauteur. NB : pour que le formulaire soit affich il faut que lauteur ait renseign le champ email de sa fiche auteur. - #NOTES affiche les notes de bas de page (calcules partir de lanalyse du texte). - #URL_AUTEUR affiche ladresse de la page spip.php?auteurxxx. Le logo - #LOGO_AUTEUR le logo de lauteur, ventuellement avec la gestion du survol. Le logo sinstalle de la manire suivante : [(#LOGO_AUTEUR|alignement|adresse)] Les variantes #LOGO_AUTEUR_NORMAL et #LOGO_AUTEUR_SURVOL permettent un affichage plus fin de ces deux variantes du logo.

Manuel de rfrence des boucles et balises

32/186

La boucle FORUMS
Mai 2001 maj : Dcembre 2007

La boucle FORUMS retourne une liste de messages de forums.


<BOUCLEn(FORUMS){critres...}>

Les critres de slection


On utilisera lun ou autre des critres suivants pour indiquer comment on slectionne les lments. - {id_forum} retourne le message dont lidentifiant est id_forum. Comme lidentifiant de chaque message est unique, ce critre retourne une ou zro rponse. - {id_article} retourne les messages correspondant cet article. - {id_rubrique} retourne les messages correspondant cette rubrique. Attention, il ne sagit pas de messages des articles de cette rubrique, mais bien des messages de cette rubrique. En effet, il est possible dactiver dans lespace priv des forums pour chaque rubrique. - {id_breve} retourne les messages correspondant cette brve. - {id_syndic} retourne les messages correspondant ce site. - {id_thread} retourne les messages appartenant ce fil de discussion. Note : id_thread nest rien dautre que lidentifiant id_forum du message qui dmarre le fil de discussion (aussi appel pied de la discussion). - {id_parent} retourne les messages dpendant dun autre message. Indispensable pour grer des fils de discussion ( threads ) dans les forums. - {id_enfant} retourne le message dont dpend le message actuel (permet de remonter dans la hirachie des fils de discussion). - {meme_parent} retourne les autres messages rpondant un mme message. - {plat} ou {tout} : affiche tous les messages de forum sans prendre en compte leur hirarchie : avec ce critre, vous pouvez slectionner tous les messages quelle que soit leur position dans un thread (dans la limite des autres critres, bien sr). Cela permet par exemple dafficher les messages par ordre strictement chronologique par exemple, ou de compter le nombre total de contributions dans un forum. N.B. En labsence de critre {id_forum} ou {id_parent}, lorsque {plat} nest pas utilis, seuls les messages nayant pas de parent (i.e. la racine dun thread) sont affichs. - {id_secteur} retourne les messages correspondant au secteur. A priori, peu utile ; mais cela permet par exemple de faire un grand forum thmatique regroupant tous les messages dun secteur, quel que soit lendroit o lon se trouve.

Manuel de rfrence des boucles et balises

33/186

- Les messages des forums peuvent tre lies des mots-cls. Les critres de mots-cls peuvent donc tre dsormais utiliss dans les boucles (FORUMS) :
{id_mot}, {titre_mot=xxx} rcuprent les messages lis au mot dont le numro est id_mot ou dont le titre est titre_mot ; {id_groupe}, {type_mot=yyyy} rcuprent les messages lis des mots du groupe id_groupe, ou du groupe dont le titre est type_mot.

Les critres daffichage


Les critres communs toutes les boucles sappliquent.

Les balises de cette boucle


- Les balises tires de la base de donnes Les balises suivantes correspondent aux lments directement tirs de la base de donnes. Vous pouvez les utiliser galement en tant que critre de classement (gnralement : {par titre}). - #ID_FORUM affiche lidentifiant unique du message. - #ID_THREAD affiche lidentifiant du fil de discussion auquel appartient ce message. (Il sagit de lid_forum du pied de la discussion.) - #URL_FORUM donne ladresse canonique de la page qui affiche le message de forum (par exemple, avec les URLs normales de SPIP, article.php?id_article=8#forum15 pour le message 15 associ larticle 8). - #ID_BREVE affiche lidentifiant de la brve laquelle ce message est attach. Attention, cela nest pas rcursif : un message qui rpond un message attach une brve ne contient pas lui-mme le numro de la brve. - #ID_ARTICLE est lidentifiant de larticle auquel rpond le message. - #ID_RUBRIQUE est lidentifiant de la rubrique laquelle le message rpond. - #ID_SYNDIC est lidentifiant du site auquel le message rpond. - #DATE est la date de publication. - #TITRE est le titre. - #TEXTE est le texte du message. - #NOM_SITE le nom du site Web indiqu par lauteur. - #URL_SITE ladresse (URL) de ce site Web. - #NOM est le nom de lauteur du message.

Manuel de rfrence des boucles et balises

34/186

- #EMAIL est ladresse email de lauteur, sous forme directe denvoi (le mailto: est intgr). Elle sutilise donc ainsi [(#EMAIL)] pour avoir la fois ladresse mail apparente et, directement, le lien cliquer sur cette adresse. - #IP est ladresse IP de lauteur du message au moment de lenvoi de sa contribution. - Les balises calcules par SPIP - #FORMULAIRE_FORUM fabrique linterface permettant de poster un message de rponse. Pour en savoir plus, voir aussi Les formulaires . - #PARAMETRES_FORUM fabrique la liste des variables exploites par linterface du formulaire permettant de rpondre ce message. Par exemple : [<a href="spip.php?page=forum&(#PARAMETRES_FORUM)"> Rpondre ce message</a>] On peut lui passer un paramtre spcifiant ladresse de retour aprs avoir post le message. Par exemple : <a
href="spip.php?page=forum&(#PARAMETRES_FORUM{#SELF})">Rpondre ce message</a> renverra le visiteur sur la page actuelle une fois que le message a t valid.

Manuel de rfrence des boucles et balises

35/186

La boucle MOTS
Mai 2001 maj : aot

2010

La boucle MOTS retourne une liste de mots-cls.


<BOUCLEn(MOTS){critres...}>

Les critres de slection


On utilisera lun ou autre des critres suivants pour indiquer comment on slectionne les lments. - {tout} les mots sont slectionns dans lintgralit du site. - {id_mot} retourne le mot-cl dont lidentifiant est id_mot. - {id_groupe} retourne les mots-cls associs au groupe de mots dont le numro est id_groupe. - {id_article} retourne les mots-cls associs cet article (cest lutilisation la plus courante de cette boucle). - {id_rubrique} retourne les mots-cls associs une rubrique. - {id_breve} retourne les mots associs une brve. - {id_syndic} retourne les mots associs un site rfrenc. - {id_forum} retourne les mots associs un message de forum .(attention, utilisation trs spcifique). - {titre=france} retourne le mot-cl intitul france (par exemple). - {type=pays} retourne les mots-cls du groupe de mots-cls intitul pays (par exemple).

Les critres daffichage


Les critres communs toutes les boucles sappliquent.

Les balises de cette boucle


Les balises tires de la base de donnes Les balises suivantes correspondent aux lments directement tirs de la base de donnes. Vous pouvez les utiliser galement en tant que critre de classement (gnralement : {par titre}). - #ID_MOT affiche lidentifiant unique du mot.

Manuel de rfrence des boucles et balises

36/186

- #TITRE affiche le titre (le mot-cl lui-mme). - #DESCRIPTIF affiche le descriptif du mot. - #TEXTE affiche le texte associ au mot. - #TYPE affiche la catgorie dans laquelle est install ce mot-cl (par exemple, le mot-cl France pourrait tre associ la catgorie Pays ). - #LOGO_MOT affiche le logo associ au mot-cl. Depuis SPIP 2.1 les filtres de logos ont la mme syntaxe que tous les autres. Un seul pipe suffit :
[(#LOGO_XXX|filtre)]

Mais : - #LOGO_XXX** renvoie le fichier - #LOGO_XXX{top/left/right/center/bottom} gnre un alignement - #LOGO_XXX{url} gnre un logo qui pointe vers lurl.

- #URL_MOT affiche ladresse de ce mot

La boucle (GROUPES_MOTS)
Dune utilisation marginale, la boucle GROUPES_MOTS mrite dtre cite ici : elle permet, si vous avez plusieurs groupes de mots-cls, de slectionner ces groupes, et dorganiser par exemple une page rcapitulative de tous les mots-cls classs par groupe, puis par ordre alphabtique lintrieur de chaque groupe, par exemple via le code suivant :
<BOUCLE_groupes(GROUPES_MOTS){par titre}> <h1>#TITRE</H1> <BOUCLE_mots(MOTS){id_groupe}{par titre}{" - "}> #TITRE </BOUCLE_mots> </BOUCLE_groupes>

Les balises et critres associs cette boucle sont : - #ID_GROUPE, lidentifiant du groupe de mots [galement disponible dans la boucle(MOTS)] ; - #TITRE, le titre du groupe [ lintrieur de la boucle(MOTS), vous pouvez utiliser #TYPE pour afficher cette valeur].

Manuel de rfrence des boucles et balises

37/186

La boucle DOCUMENTS
Juin 2002 maj : Mai 2009

La boucle DOCUMENTS retourne une liste de documents multimdia associs ( un article, une rubrique, ventuellement les images incluses dans une brve).
<BOUCLEn(DOCUMENTS){critres...}>

Cette boucle gre non seulement les documents joints non installs dans le texte dun article, mais peut aussi accder aux images (depuis la version 1.4, les images sont gres, au niveau du programme, comme un genre spcifique de documents), aux vignettes de prvisualisation et aux documents dj insrs dans le corps de larticle. Pour mmoire, on utilisera donc le plus frquemment (utilisation courante) la boucle DOCUMENTS avec, au minimum, les critres suivants (explications ci-aprs) : <BOUCLEn(DOCUMENTS){mode=document}{doublons}>

Les critres de slection


Une boucle DOCUMENTS sutilise en gnral lintrieur dun article ou dune rubrique (ventuellement dans une brve, mais ici lutilisation sera rserve la rcupration dimages, ce qui sera trs spcifique). - {id_document} slectionne le document dont lidentifiant est id_document. Comme lidentifiant de chaque document est unique, ce critre ne retourne quune ou zro rponse. - {id_article} retourne les documents de larticle dont lidentifiant est id_article. - {id_rubrique} retourne les documents de la rubrique id_rubrique. - {id_breve} retourne les documents de la brve id_breve (il nest pas possible dassocier des documents multimdia une brve, seulement des images ; lutilisation dune boucle DOCUMENTS dans ce cadre sera donc trs spcifique). Notez bien : il nest pas possible dutiliser ici le critre {id_secteur} ; les documents sont conus pour tre intimement lis aux articles et aux rubriques, et non tre appels seuls sans ces lments (on parle dans SPIP de documents joints ).

Les critres daffichage


- {mode=document} ou {mode=image} permet dindiquer si lon veut appeler les documents multimdia, ou les images (en effet, dsormais les images associes larticle et ventuellement insres dans larticle sont traits comme des documents en mode=image). - {extension=...} permet de slectionner les documents selon leur terminaison (terminaison du fichier multimdia, par exemple mov , ra , avi ...). Cela peut tre utilis par exemple pour raliser un porfolio, cest--dire une boucle naffichant que les documents de type image, une seconde boucle ensuite, avec une prsentation graphique diffrente, les autres types de documents : Manuel de rfrence des boucles et balises 38/186

<BOUCLE_portfolio(DOCUMENTS){id_article}{extension==jpg|png|gif} {mode=document}{doublons}>

Cette BOUCLE_portfolio rcupre les documents joints un article, non dj affichs dans le texte de larticle, et donc les extensions des fichiers peuvent tre jpg , png ou gif . - {distant} permet de slectionner les documents selon quils soient distant ou non. Cest dire stocks sur un autre site ou tlchargs dans lespace web du site. On prcisera {distant=oui} et {distant=non} respectivement. - {doublons} prend ici une importance particulire : elle permet non seulement de ne pas rafficher des documents dj affichs par une autre boucle, mais galement de ne pas rafficher les documents dj intgrs lintrieur dun article. Si lon oublie ce critre, on affichera tous les documents associs un article, y compris ceux qui auraient dj t affichs lintrieur du texte3 [1].

Les balises
- #LOGO_DOCUMENT affiche le logo (vignette de prvisualisation) associ au document ; si une vignette personnalise na pas t installe manuellement par lauteur de larticle, SPIP utilise une vignette standard selon le type du fichier. - #URL_DOCUMENT est lURL du fichier multimdia. Pour afficher une vignette cliquable pointant vers le document multimdia, on utilisera donc le code suivant : [(#LOGO_DOCUMENT|#URL_DOCUMENT)] - #TITRE affiche le titre du document. - #DESCRIPTIF affiche le descriptif du document. - #FICHIER affiche le nom de fichier du document, plus prcisment son URL relative. Pour obtenir le nom de fichier seul, on passera ce filtre : [(#FICHIER|basename)]. Une utilisation intressante de cette balise est combine avec le filtre image_reduire, dans le cadre dun portfolio pour afficher une rduction de limage plutt que de son logo ; par exemple en utilisant : [<a href="#URL_DOCUMENT">(#FICHIER|image_reduire{500}) </a>] - #TYPE_DOCUMENT affiche le type (fichier Quicktime, fichier Real...) du document multimdia. - #EXTENSION comme son nom lindique, affiche lextension du format du fichier, par exemple : pdf, jpeg, move, ra. - #TAILLE affiche la taille du fichier multimdia. Ce chiffre est fourni en octets. Pour de gros fichiers, cette valeur devient rapidement inutilisable ; on pourra donc lui appliquer le filtre

Si on utilise un critre avec un nom ({doublons unnom}), celui ci nexclura pas les documents intgrs dans le texte de larticle.

Manuel de rfrence des boucles et balises

39/186

taille_en_octets,

qui affichera successivement en octets, en kilooctets, ou mme en

mgaoctets : [(#TAILLE|taille_en_octets)] - #LARGEUR et #HAUTEUR fournissent les dimensions en pixels. - #MIME_TYPE affiche le type MIME du fichier par exemple : image/jpeg , cf. Type de mdia internet. - #DATE est la date de mise en ligne du document. (Modifiable aprs lajout). Voir La gestion des dates pour des dtails sur lutilisation du champ #DATE. - #ID_DOCUMENT affiche le numro du document. - #DISTANT est une balise qui affiche oui ou non selon que le document est distant (rfrenc par une url) ou pas. Exemple :
#URL_DOCUMENT[(#DISTANT|=={oui}|oui)|parametre_url{nom,valeur}]

- #EMBED_DOCUMENT est une balise permettant dincruster le document dans la page produite plutt que de le rfrencer. Cette balise est aujourdhui dprcie, tant un cas particulier des modles (voir Utiliser les modles) qui permettent de moduler cette incrustation de manire plus souple et plus efficace. Cette balise peut tre complte de paramtres propres aux formats utiliss, par exemple : [(#EMBED_DOCUMENT|autostart=true)] mais on lui prfrera ce en quoi elle se traduit automatiquement prsent : #MODELE{emb, autostart=true}

Manuel de rfrence des boucles et balises

40/186

La boucle SITES (ou SYNDICATION)


Mai 2001 maj : Mars 2009

La boucle SITES retourne une liste de sites rfrencs.


<BOUCLEn(SITES){critres...}>

Si lon a syndiqu des sites rfrencs, cette boucle sutilise, naturellement, associe une boucle SYNDIC_ARTICLES qui permet de rcuprer la liste des articles de ces sites.

Les critres de slection


On utilisera lun ou autre des critres suivants pour indiquer comment on slectionne les lments. - {tout} slectionne tous les sites rfrencs. - {id_syndic} slectionne le site rfrenc dont lidentifiant est id_syndic. - {id_rubrique} slectionne les sites rfrencs dans cette rubrique. - {id_secteur} slectionne les sites rfrencs dans ce secteur. - {id_mot} slectionne toutes les sites lis au mot-cl indiqu par le contexte (boucle (MOTS) englobante, paramtre dURL etc). - {titre_mot=xxxx}, ou {type_mot=yyyy} slectionne les sites lis au mot-cl dont le nom est xxxx , ou lis des mots-cls du groupe de mots-cls yyyy . Si lon donne plusieurs plusieurs critres {titre_mot=xxxx} (ou plusieurs {type_mot=yyyy}), on slectionnera ceux qui auront tous ces mots la fois. - {id_groupe=zzzz} permet de slectionner les sites lis un groupe de mots-cls ; principe identique au {type_mot} prcdent, mais puisque lon travaille avec un identifiant (numro du groupe), la syntaxe sera plus propre .

Les critres daffichage


Les critres communs toutes les boucles sappliquent. - {syndication=oui}, ou {syndication=non} permet de nafficher que les sites rfrencs faisant lobjet dune syndication, ou les sites non syndiqus. - {moderation=oui} affiche les sites syndiqus dont les liens sont bloqus a priori ( modrs ) ; linverse de ce critre est {moderation!=oui}.

Manuel de rfrence des boucles et balises

41/186

Les balises de cette boucle


Les balises tires de la base de donnes Les balises suivantes correspondent aux lments directement tirs de la base de donnes. Vous pouvez les utiliser galement en tant que critre de classement (gnralement : {par nom_site}). - #ID_SYNDIC affiche lidentifiant unique du site rfrenc. Par exemple pour renvoyer vers la page dcrivant le site (site.html sur la /dist) avec le code suivant :
<BOUCLE_sites(SITES) {id_rubrique} {par nom_site}> <li><a href="[(#ID_SYNDIC|generer_url_entite{site})]">#NOM_SITE</a></li> </BOUCLE_sites>

- #NOM_SITE affiche le nom du site rfrenc. - #URL_SITE affiche ladresse (URL) du site rfrenc. - #DESCRIPTIF affiche le descriptif du site rfrenc. - #ID_RUBRIQUE affiche le numro de la rubrique contenant ce site. - #ID_SECTEUR affiche le numro de la rubrique-secteur ( la racine du site) contenant ce site. Autres balises - #LOGO_SITE affiche le logo attribu au site. - #URL_SYNDIC affiche ladresse (URL) du fichier de syndication de ce site. - #FORMULAIRE_FORUM fabrique et affiche le formulaire permettant de poster un message de forum propos de ce site. Pour en savoir plus, voir aussi Les formulaires . - #PARAMETRES_FORUM fabrique la liste des variables exploites par linterface du formulaire permettant de poster un message de forum propos de ce site. Par exemple : [<a
href="spip.php?page=forum&(#PARAMETRES_FORUM)">Rpondre ce forum</a>]

On peut lui passer un paramtre spcifiant ladresse de retour aprs avoir post le message. Par exemple :
<a href="spip.php?page=forum&(#PARAMETRES_FORUM{#SELF})">Rpondre ce message</a>

renverra le visiteur sur la page actuelle une fois que le message a t valid.

Manuel de rfrence des boucles et balises

42/186

La boucle SYNDIC_ARTICLES
Mai 2001 maj : Janvier 2007

La boucle SYNDIC_ARTICLES retourne une liste des articles des sites syndiqus.
<BOUCLEn(SYNDIC_ARTICLES){critres...}>

On peut soit lutiliser lintrieur dune boucle SITES (cette dernire rcupre une liste de sites rfrencs, ensuite on rcupre chaque article de ces sites), soit directement lintrieur dune rubrique (on rcupre directement tous les articles syndiqus dans une rubrique, en court-circuitant le passage par la liste des sites). La boucle SITES (ou SYNDICATION) naffiche pas uniquement des sites syndiqus, mais plus gnralement des sites rfrencs (la syndication de certains sites rfrencs tant une option). On pourra donc, pour obtenir une prsentation graphique plus prcise, utiliser une boucle SYNDIC_ARTICLES uniquement lintrieur dune boucle SITES utilisant le critre {syndication=oui}.

Les critres de slection


On utilisera lun ou autre des critres suivants pour indiquer comment on slectionne les lments. - {tout}, tous les sites syndiqus. - {id_syndic_article} retourne larticle syndiqu dont lidentifiant est id_syndic_article. (Dans la pratique, il y trs peu dintrt fabriquer une page pour un article syndiqu, puisquon prfrera renvoyer directement vers larticle en question.) - {id_syndic} retourne la liste des articles du site syndiqu dont lidentifiant est id_syndic. - {id_rubrique} retourne la liste des articles syndiqus dans cette rubrique. - {id_secteur} retourne la liste des articles syndiqus dans ce secteur.

Les critres daffichage


Les critres communs toutes les boucles sappliquent.

Les balises de cette boucle


Les balises tires de la base de donnes Les balises suivantes correspondent aux lments directement tirs de la base de donnes. Vous pouvez les utiliser galement en tant que critre de classement (gnralement : {par titre}). - #ID_SYNDIC_ARTICLE affiche lidentifiant unique de larticle syndiqu. - #ID_SYNDIC affiche lidentifiant unique du site syndiqu contenant cet article. Manuel de rfrence des boucles et balises 43/186

- #TITRE affiche le titre de larticle. Remarque : il est prfrable dutiliser ici le titre brut de larticle syndiqu - via le code [(#TITRE*)] -, pour viter le moteur typographique. En effet les titres sont censs tre dj typographiquement corrects dans les backends, et on ne souhaite pas passer la correction typographique sur des titres en anglais ou sur des titres comprenant des expressions du genre Les fichiers ~/.tcshrc . - #URL_ARTICLE affiche ladresse (URL) de larticle syndiqu (sur son site original). - #DATE affiche la date de publication de cet article. - #LESAUTEURS affiche les auteurs de larticle syndiqu. - #DESCRIPTIF affiche le descriptif de larticle syndiqu. - #NOM_SITE affiche le nom du site syndiqu contenant cet article. - #URL_SITE affiche ladresse (URL) du site

Manuel de rfrence des boucles et balises

44/186

La boucle SIGNATURES
Mai 2001 maj : Octobre 2008

La boucle SIGNATURES retourne une liste de signatures de ptition.


<BOUCLEn(SIGNATURES){critres...}>

Les critres de slection


Les critres disponibles sont les suivants : - {id_article} retourne les signatures de la ptition de cet article. - {id_signature}, la signature correspondant lidentifiant indiqu. - {id_trad}, retourne les signatures des ptitions associes larticle indiqu ou ses traductions. - {tout} toutes les signatures sont slectionnes dans lintgralit du site. Tous ces critres peuvent tre conditionnels, et ventuellement combins. Par exemple {id_trad ?}{id_article ?} permet de slectionner les signatures pour un article ou pour tout un jeu de traduction dun article, selon le contexte fourni.

Les critres daffichage


Les critres communs toutes les boucles sappliquent. Attention. Dans ce type de boucles, certains critres de classement ne sont pas identiques aux balises SPIP indiques ci-dessous : - {par nom_email} classe les rsultats selon le #NOM du signataire ; - {par ad_email} classe selon l#EMAIL du signataire.

Les balises de cette boucle


Les balises tires de la base de donnes Les balises suivantes correspondent aux lments directement tirs de la base de donnes. Vous pouvez les utiliser galement en tant que critre de classement (gnralement : {par nom_email}). - #ID_SIGNATURE affiche lidentifiant unique du message. - #ID_ARTICLE affiche lidentifiant de larticle pour cette ptition. - #DATE affiche la date de publication. - #MESSAGE affiche le texte du message. - #NOM_EMAIL affiche le nom de lauteur du message. Manuel de rfrence des boucles et balises 45/186

- #EMAIL affiche ladresse email de lauteur. - #NOM_SITE affiche le nom du site Web indiqu par lauteur. - #URL_SITE affiche ladresse (URL) de ce site Web.

Manuel de rfrence des boucles et balises

46/186

La boucle HIERARCHIE
Mai 2001 maj : Aot 2008

La boucle HIERARCHIE retourne la liste des RUBRIQUES qui mnent de la racine du site la rubrique ou larticle en cours.
<BOUCLEn(HIERARCHIE){critres...}>

Les critres de slection


On utilisera obligatoirement lun des deux critres suivants pour indiquer comment on slectionne les lments : - {id_article} retourne la liste des rubriques depuis la racine jusqu la rubrique contenant larticle correspondant cet identifiant. - {id_rubrique} retourne la liste des rubriques depuis la racine jusqu la rubrique correspondant cet identifiant (exclue). Les critres {id_article} ou {id_rubrique} ne peuvent pas tre utiliss avec une comparaison. Par exemple, <BOUCLE_hi(HIERARCHIE) {id_article=12}> retournera une erreur. Attention : cette boucle sera obligatoirement place lintrieur dune boucle ARTICLES ou RUBRIQUES elle ne va pas par elle-mme chercher lid_article ou id_rubrique indique dans lURL. (Le mme principe vaut pour les boucles HIERARCHIE des squelettes inclus par la commande <INCLURE{fond=xxx}>)

Les critres daffichage


Tous les critres de la boucle RUBRIQUES peuvent tre utiliss avec cette boucle, y compris les critres de tri (il devient possible par exemple de trier une <BOUCLE_x(HIERARCHIE){id_article}{par hasard}>).

Les balises de cette boucle


Les lments obtenus avec une boucle HIERARCHIE sont des rubriques. On peut donc utiliser toutes les balises proposes pour les boucles RUBRIQUES. Note : Il ny a pas de critre id_breve dans HIERARCHIE mais, dans le cas dune brve, lusage did_article retournera quand mme la bonne rubrique.

Manuel de rfrence des boucles et balises

47/186

Les critres communs toutes les boucles


Mai 2001 maj : septembre

2010

Certains critres sappliquent (presque) tous les types de boucles. Ce sont des critres destins restreindre le nombre de rsultats affichs ou indiquer lordre daffichage. On peut sans difficult combiner plusieurs de ces critres de slection.

Classer les rsultats


indique lordre de prsentation des rsultats. Ce critre de classement correspond lune des balises tires de la base de donnes pour chaque type de boucle. Par exemple, on pourra classer les articles {par date}, {par date_redac} ou {par titre}. (Notez que, si les balises sont en majuscules, les critres de classement sont en minuscules.)
{par critre_de_classement}

Cas particulier : {par hasard} permet dobtenir une liste prsente dans un ordre alatoire. Inverser le classement. De plus, {inverse} provoque laffichage du classement invers. Par exemple {par date} commence par les articles les plus anciens ; avec {par date}{inverse} on commence la liste avec les articles les plus rcents. Le critre inverse peut prendre en paramtre nimporte quelle balise pour varier dynamiquement le sens du tri. Par exemple, il est possible dcrire : ce qui permet de choisir la colonne de tri et le sens du tri par lurl (&senstri=1 ou &senstri=0) Classer par numro. Lorsquon ralise le classement selon un lment de texte (par exemple le titre), le classement est ralis par ordre alphabtique. Cependant, pour forcer un ordre daffichage, on peut indiquer un numro devant le titre, par exemple : 1. Mon premier article , 2. Deuxime article , 3. Troisime... , etc ; avec un classement alphabtique, le classement de ces lments donnerait la srie 1, 10, 11, 2, 3... . Pour rtablir le classement selon les numros, on peut utiliser le critre :
{par num critre} <BOUCLE_exemple(ARTICLES){par #ENV{tri}}{inverse #ENV{senstri}}>,

Par exemple :
<BOUCLE_articles(ARTICLES){id_rubrique}{par date}{inverse}>

affiche les articles dune rubrique classs selon lordre chronologique invers (les plus rcents au dbut, les plus anciens la fin), et :
<BOUCLE_articles(ARTICLES){id_rubrique}{par titre}>

les affiche selon lordre alphabtique de leur titre ; enfin :


<BOUCLE_articles(ARTICLES){id_rubrique}{par num titre}>

les affiche selon lordre du numro de leur titre (remarque : loption {par num titre} ne fonctionne pas pour les versions de MySQL antrieures la version 3.23).

Manuel de rfrence des boucles et balises

48/186

<BOUCLE_articles(ARTICLES){id_rubrique}{par multi titre}>

Dans le cadre dun site multilingue le critre {par multi critre} permet de trier par ordre alphabtique dans chaque langue. Sans lajout de "multi" la boucle renvoie le mme classement pour chaque langue. Classer selon plusieurs critres On peut classer selon plusieurs critres : {par critre1, critre2}. On indique ainsi des ordres de classement conscutifs. Les rsultats seront dabord tris selon le critre1, puis le critre2 pour les rsultats ayant le mme critre1. On peut spcifier autant de critres que ncessaire. Par exemple {par date, titre} triera les rsultats par date puis les rsultats ayant la mme date seront tris par titre. On peut spcifier plusieurs critres {par ...} pour une boucle pour arriver au mme rsultat. Par exemple : {par date} {par titre} est quivalent lexemple prcdent. Remarque : Quand on utilise plusieurs critres de tri, le critre {inverse} ne sapplique quau critre de tri plac juste avant. La notation {!par ...} inverse un critre de tri en particulier. Par exemple : {!par date} {par num titre} tri par date dcroissantes puis par numros croissants dans le titre pour les rsultats ayant la mme date.

Comparaisons, galits
Comparaison avec une valeur fixe (on peut utiliser > , < , = , >= , <= . Tous les critres de classement (tels que tirs de la base de donnes) peuvent galement tre utiliss pour limiter le nombre de rsultats.
{critre < valeur}

La valeur droite de loprateur peut tre : - Une valeur constante fixe dans le squelette. Par exemple :
<BOUCLE_art(ARTICLES){id_article=5}>

affiche larticle dont le numro est 5 (utile pour mettre en vedette un article prcis sur la page daccueil).
<BOUCLE_art(ARTICLES){id_secteur=2}>

affiche les articles du secteur numro 2. - Une balise disponible dans le contexte de la boucle. Par exemple :
<BOUCLE_art(ARTICLES){id_article=5}> <BOUCLE_titre(ARTICLES) {titre=#TITRE}> ... </BOUCLE_titre> </BOUCLE_art>

sert trouver les articles qui ont le mme titre que larticle 5.

Manuel de rfrence des boucles et balises

49/186

Attention : On ne peut utiliser qu'une balise simple. Il nest pas permis de la filtrer ou de mettre du code optionnel. Spcialement, si on veut utiliser la balise #ENV ou tout autre balise prenant des paramtres , on doit utiliser la notation : {titre = #ENV{titre}} et pas : {titre = [(#ENV{titre})]}. Expressions rgulires : Trs puissant (mais nettement plus complexe manipuler), le terme de comparaison == introduit une comparaison selon une expression rgulire. Par exemple :
<BOUCLE_art(ARTICLES){titre==^[aA]}>

slectionne les articles dont le titre commence par a ou A . Ngation : On peut utiliser la notation {xxx != yyy} et {xxx !== yyy}, le ! correspondant la ngation (oprateur logique NOT).
<BOUCLE_art(ARTICLES){id_secteur != 2}>

slectionne les articles qui nappartiennent pas au secteur numro 2.


<BOUCLE_art(ARTICLES){titre!==^[aA]}>

slectionne les articles dont le titre ne commence pas par a ou A .

Affichage en fonction de la date


Pour faciliter lutilisation des comparaisons sur les dates, on a ajout des critres : - age et age_redac correspondent respectivement lanciennet de la publication et de la premire publication dun article, en jours : {age<30} slectionne les lmnts publis depuis un mois ; - les critres mois, mois_redac, annee, annee_redac permettent de comparer avec des valeurs fixes ({annee<=2000} pour les lments publis avant la fin de lanne 2000). On peut combiner plusieurs de ces critres pour effectuer des slections trs prcises. Par exemple :
<BOUCLE_art(ARTICLES){id_secteur=2}{id_rubrique!=3}{age<30}>

affiche les articles du secteur 2, lexclusion de ceux de la rubrique 3, et publis depuis moins de 30 jours. Astuce. Le critre age est trs pratique pour afficher les articles ou les brves dont la date est situe dans le futur , avec des valeurs ngatives ( condition davoir slectionn, dans la Configuration prcise du site, loption Publier les articles post-dats ). Par exemple, ce critre permet de mettre en valeur des vnements futurs. {age<0} slectionne les articles ou les brves dont la date est situe dans le futur ( aprs aujourdhui)...

Manuel de rfrence des boucles et balises

50/186

ge par rapport une date fixe. Le critre age est calcul par rapport la date daujourdhui (ainsi {age<30} correspond aux articles publis depuis moins dun mois par rapport aujourdhui). Le critre age_relatif compare la date dun article ou dune brve une date courante ; par exemple, lintrieur dune boucle ARTICLES, on connat dj une date pour chaque rsultat de la boucle, on peut donc slectionner par rapport cette date (et non plus par rapport aujourdhui). Par exemple :
<BOUCLE_article_principal(ARTICLES){id_article}> <h1>#TITRE</h1> <BOUCLE_suivant(ARTICLES){id_rubrique}{age_relatif<=0}{exclus}{par date}{0,1}> Article suivant: #TITRE </BOUCLE_suivant> </BOUCLE_article_principal>

la BOUCLE_suivant affiche un seul article de la mme rubrique, class par date, dont la date de publication est infrieure ou gale la date de l article_principal ; cest--dire larticle de la mme rubrique publi aprs larticle principal. De plus amples informations sur lutilisation des dates se trouvent dans larticle sur La gestion des dates .

Affichage dune partie des rsultats


- {branche} Limite les rsultats pour des boucles ayant un #ID_RUBRIQUE la branche actuelle (la rubrique actuelle et ses sous-rubriques). Par exemple : <BOUCLE_articles(ARTICLES) {branche}> retournera tous les articles de la rubrique actuelle et de ces sous-rubriques, <BOUCLE_articles(ARTICLES) {!branche}> retournera tous les articles qui ne sont pas dans la rubrique actuelle ou ses sous-rubriques, On peut utiliser le critre {branche?} optionnel pour ne lappliquer que si une rubrique est slectionne dans le contexte (une boucle englobante ou lurl fournie un id_rubrique). Par exemple : <BOUCLE_articles(ARTICLES) {branche?}> retournera tous les articles de la rubrique actuelle et de ces sous-rubriques si il y a un id_rubrique dans le contexte, sinon, tous les articles du site.

- {doublons} ou {unique} (ces deux critres sont rigoureusement identiques) permettent dinterdire laffichage des rsultats dj affichs dans dautres boucles utilisant ce critre.

- {doublons xxxx} on peut avoir plusieurs jeux de critres {doublons} indpendants. Les boucles ayant {doublons rouge} nauront aucune incidence sur les boucles ayant {doublons bleu} comme critre.

- {exclus} permet dexclure du rsultat llment (article, brve, rubrique, etc.) dans lequel Manuel de rfrence des boucles et balises 51/186

on se trouve dj. Par exemple, lorsque lon affiche les articles contenus dans la mme rubrique, on ne veut pas afficher un lien vers larticle dans lequel on se trouve dj.

- {xxxx IN a,b,c,d} limite laffichage aux rsultats ayant le critre xxxx gal a, b, c ou d. Les rsultats sont tris dans lordre indiqu (sauf demande explicite dun autre critre de tri). Il est aussi possible de slectionner des chanes de caractres, par exemple avec {titre IN 'Chine', 'Japon'}. Les balises sont admises dans les arguments de IN, et notamment la balise ENV, laquelle sont appliqus les filtres danalyse pour assurer que la requte SQL sera bien crite. De manire drogatoire, SPIP testera si largument de ENV dsigne un tableau (venant par exemple de saisies de formulaire dont lattribut name se termine par []). Si cest le cas, et si les filtres danalyse ont t dsactivs en suffixant cette balise par une double toile, alors chaque lment du tableau sera considr comme argument de IN, SPIP appliquant les filtres de scurit sur chacun deux. Le squelette standard formulaire_forum_previsu fournit un exemple dutilisation avec une boucle MOTS ayant le critre {id_mot IN #ENV**{ajouter_mot}} : cette boucle slectionne seulement les mots-cls appartenant un ensemble indiqu dynamiquement. Ici, cet ensemble aura t construit par le formulaire du squelette standard choix_mots, qui utilise des attributs name=ajouter_mot[]. - {a, b} o a et b sont des nombres. Ce critre permet de limiter le nombre de rsultats. a indique le rsultat partir duquel on commence laffichage (attention, le premier rsultat est numrot 0 - zro) ; b indique le nombre de rsultats affichs. Par exemple {0, 10} affiche les dix premiers rsultats ; {4, 2} affiche les deux rsultats partir du cinquime (inclus). - {debut_xxx,b} est une variante trs labore de la prcdente. Elle permet de faire commencer la limitation des rsultats par une variable passe dans lURL (cette variable remplace ainsi le a que lon indiquait prcdemment). Cest un fonctionnement un peu compliqu, que fort heureusement on na pas besoin dutiliser trop souvent. La variable passe dans lURL commence forcment par debut_xxx (o xxx est un mot choisi par le webmestre) . Ainsi, pour une page dont lURL est :
spip.php?page=petition&id_article=13&debut_signatures=200

avec un squelette (petition.html) contenant par exemple :


<BOUCLE_signatures(SIGNATURES){id_article}{debut_signatures,100}>

on obtiendra la liste des 100 signatures partir de la 201-ime [rappel]. Avec lURL :
spip.php?page=petition&id_article=13&debut_signatures=300

on obtient la liste des 100 signatures partir de la 301-ime [rappel].

Manuel de rfrence des boucles et balises

52/186

- {a, n-b} est une variante de {a, b} qui limite laffichage en fonction du nombre de rsultats dans la boucle. a est le rsultat partir duquel commencer faire laffichage ; b indique le nombre de rsultats ne pas afficher la fin de la boucle.
{0, n-10} {5, n}

affichera tous les rsultats de la boucle sauf les 10 derniers.

affichera les rsultats du 6me au dernier.

Attention : si a et b sont remplacer par des nombres, cest bien la lettre n quil faut utiliser quand ncessaire. - {n-a, b} est le pendant de {a, n-b}. ae rsultat avant la fin de la boucle. On limite b rsultats en commenant laffichage au

Par exemple : {n-20,10} affichera 10 rsultats en partant du 20e rsultat avant la fin de la boucle. - {a/b} o a et b sont des chiffres. Ce critre permet dafficher une partie a (proportionnellement) des rsultats en fonction dun nombre de tranches b. Par exemple : {1/3} affiche le premier tiers des rsultats. Ce critre est surtout utile pour prsenter des listes sur plusieurs colonnes. Pour obtenir un affichage sur deux colonnes, il suffit de crer une premire boucle, affiche dans une case de tableau, avec le critre {1/2} (la premire moiti des rsultats), puis une seconde boucle dans une seconde case, avec le critre {2/2} (la seconde moiti des rsultats). Attention. Lutilisation du critre {doublons} avec ce critre est prilleuse. Par exemple :
<BOUCLE_prem(ARTICLES){id_rubrique}{1/2}{doublons}> <li> #TITRE </BOUCLE_prem> <BOUCLE_deux(ARTICLES){id_rubrique}{2/2}{doublons}> <li> #TITRE </BOUCLE_deux>

naffichera pas tous les articles de la rubrique ! Imaginons par exemple quil y ait au total 20 articles dans notre rubrique. La BOUCLE_prem va afficher la premire moiti des articles, cest--dire les 10 premiers, et interdire ( cause de {doublons}) de les rutiliser. La BOUCLE_deux, elle, va rcuprer la deuxime moiti des articles de cette rubrique qui nont pas encore t affichs par la BOUCLE_prem ; donc, la moiti des 10 articles suivants, cest-dire les 5 derniers articles de la rubrique. Vous avez donc perdu 5 articles dans lopration...

Affichage entre les rsultats


{"inter"} permet dindiquer un code HTML (ici, inter) insr entre les rsultats de la boucle. Par exemple, pour sparer une liste dauteurs par une virgule, on indiquera : <BOUCLE_auteurs(AUTEURS){id_article}{", "}>

Divers

Manuel de rfrence des boucles et balises

53/186

permet de ne slectionner que les articles (ou rubriques, etc) qui disposent dun logo. Il fonctionne aussi dans la boucle (HIERARCHIE). Le critre inverse {!logo} liste les objets qui nont pas de logo.
{logo}

Notes
[rappel] le premier rsultat est numrot 0, donc le 200e rsultat reprsente rellement la 201 e signature

Manuel de rfrence des boucles et balises

54/186

Les balises propres au site


Dcembre 2001 maj : Mars 2009

Les balises suivantes sont disponibles nimporte quel endroit du squelette, mme en dehors dune boucle (hors contexte ).

Balises dfinies la configuration


Le contenu de ces balises est dfini dans lespace priv, lors de la configuration de votre site. - #NOM_SITE_SPIP affiche le nom du site. - #URL_SITE_SPIP affiche ladresse du site. Elle ne comprend pas le / final, ainsi vous pouvez crer un lien du type #URL_SITE_SPIP/sommaire.php - #DESCRIPTIF_SITE_SPIP affiche, comme son nom lindique, le descriptif du site, que lon renseigne dans la page de configuration gnrale du site. - #EMAIL_WEBMASTER affiche ladresse du webmestre. Par dfaut, SPIP prend ladresse de celui qui a install le site (le premier administrateur). - #LOGO_SITE_SPIP affiche le logo du site. Cette balise renvoie le logo du site 0. Il ne faut pas confondre avec le logo de la racine, aussi dsign sous le nom de logo standard des rubriques, cest--dire celui de la rubrique 0. - #CHARSET affiche le jeu de caractres utilis par le site. Sa valeur par dfaut est iso-88594 1, jeu de caractres dit iso-latin . - #LANG : utilise en dehors des boucles ARTICLES, RUBRIQUES, BREVES et AUTEURS, cette balise affiche la langue principale du site. - #LANG_DIR, #LANG_LEFT, #LANG_RIGHT : ces balises dfinissent le sens dcriture de la langue du contexte actuel (par exemple, de larticle quon est en train dafficher). Voir larticle Raliser un site multilingue pour plus dinformation. - #MENU_LANG (et #MENU_LANG_ECRIRE) : ces balises fabriquent et affichent un menu de langues permettant au visiteur dobtenir la page en cours dans la langue choisie. La premire balise affiche la liste des langues du site ; la seconde la liste des langues de lespace priv (elle est utilise sur la page de connexion lespace priv).

Balises de mise en page


La balise #CHEMIN{xxx} donne le chemin complet vers le fichier xxx, quil se trouve la racine, dans le dossier des squelettes, dans squelettes-dist/ etc. On peut ainsi placer les fichiers accessoires (feuille de style, javascript, etc...) au squelette dans le rpertoire squelettes et donc simplement distribuer ce dossier pour changer ses
4

Cf. www.uzine.net/article1785.html pour une introduction aux charsets, en attendant une documentation plus complte de cette fonctionnalit de SPIP.

Manuel de rfrence des boucles et balises

55/186

squelettes. On crira donc, par exemple, pour inclure une feuille de style du rpertoire squelette :
<link rel="stylesheet" href="#CHEMIN{mon_style.css}" type="text/css" />

- #PUCE affiche devinez-quoi... - #FORMULAIRE_ADMIN est une balise optionnelle qui permet de placer les boutons dadministration ( recalculer cette page , etc.) dans ses squelettes. Lorsquun administrateur parcours le site public, si cette balise est prsente, elle sera remplace par les boutons dadministration, sinon, les boutons seront placs la fin de la page. On peut aussi modifier la feuille de style spip_admin.css pour contrler la position des boutons. - #DEBUT_SURLIGNE, #FIN_SURLIGNE sont deux balises qui indiquent SPIP dans quelle partie de la page colorer les mots clefs recherchs. Voir : Les boucles et balises de recherche . - La balise #INSERT_HEAD doit se situer entre les balises <head> et </head> de vos squelettes. Elle permet SPIP, ainsi quaux plugins ventuels, dajouter du contenu entre ces deux balises html.

Balises techniques
Attention, ces balises sadressent des utilisateurs avertis de SPIP. - La balise #REM ne produit aucun affichage : elle permet de commenter le code des squelettes, de cette faon : [(#REM) Ceci est un commentaire. ]. Ces commentaires napparaissent pas dans le code gnr pour le site public. - #SELF retourne lURL de la page appele, nettoye des variables propres lexcution de SPIP. Par exemple, pour une page avec lurl : spip.php?article25&var_mode=recalcul la balise #SELF retournera : spip.php?article25 Par exemple pour faire un formulaire :
<form action="#SELF" method="get">

Remarque : la balise #SELF reprsentant ladresse de la page, elle nest pas compatible avec les <INCLURE()> (sauf si le $delais de linclusion est mis 0). - #URL_PAGE retourne une url de type page (cf. les urls de spip), vers la page passe en paramtre et qui pourra tre utilise dans un lien. Par exemple, pour accder la page gnre par le squelette toto.html, situe dans votre dossier-squelette, #URL_PAGE{toto} gnra automatiquement lurl spip.php?page=toto. Un second paramtre est autoris pour ajouter des paramtres lurl. Exemple #URL_PAGE{toto,id_article=#ID_ARTICLE} gnrera lurl spip.php?page=toto&id_article=XXX.

Manuel de rfrence des boucles et balises

56/186

- [(#ENV{xxxx,zzzz})] permet daccder la variable de nom xxxx passe par la requte HTTP. zzzz est une partie optionnelle qui permet de retourner une valeur mme si la variable xxxx nexiste pas. On trouve une explication dtaille sur Spip-Contrib Par dfaut, la balise #ENV est filtre par htmlspecialchars. Si on veut avoir le rsultat brut, ltoile * peut tre utilise comme pour les autres balises : [(#ENV*{xxxx})]. Par exemple pour limiter la liste dauteurs affichs :
<BOUCLE_auteurs(AUTEURS) {nom == #ENV{lettre,^A}}>

Retourne la liste dauteur ayant le nom correspondant lexpression rgulire pass dans lurl par la variable lettre (liste_auteur.php3?lettre=^Z) ou les auteurs qui ont un nom commenant par un A sil ny a pas de variable dans lurl. - La balise #SPIP_CRON est lie la gestion par SPIP des calculs quil doit faire priodiquement (statistiques, indexation pour le moteur de recherche, syndication de sites etc.). Si cette balise nest pas prsente sur le site, le moteur de SPIP effectue ses calculs, en temps utile, aprs avoir envoy une page un visiteur ; malheureusement php ne permet pas de fermer la connexion la fin de la page, et dans certains cas cela peut conduire certains visiteurs malchanceux (ceux dont le passage dclenche une procdure un peu longue, notamment la syndication) constater une certaine lenteur dans laffichage de la page demande. La balise #SPIP_CRON permet de contourner ce problme : son rle est de gnrer un marqueur <div> invisible dont la proprit background pointe sur le script spip_background.php3 ; ce script son tour effectue les calculs ncessaires en tche de fond , et renvoie une image transparente de 11 pixel. Cette astuce permet donc dviter tout sentiment de ralentissement en dportant les ventuelles lenteurs sur un script annexe. A noter : cette balise nest pas stratgique, et sa prsence ou son absence ne modifient en rien la rgularit du calcul des tches priodiques du site. - La balise #SET{variable,valeur} et son pendant #GET{variable} : La balise #SET{xxx,yyy} affecte une valeur yyy une variable xxx propre au squelette calcul. Cette valeur peut tre rcupre par la balise #GET{xxx}. Les variables cres ainsi ne sont pas transmises au squelette inclus. Attention ! Si lon affecte une valeur une variable dans la partie facultative avant dune boucle, il ne sera pas possible de rcuprer cette valeur dans la boucle. Cela tient la manire dont Spip calcule les squelettes. - La balise #HTTP_HEADER{argument} permet de modifier lentte HTTP de la page retourne par SPIP. Exemple : #HTTP_HEADER{Content-Type: text/css}. Attention ! Le fait dutiliser cette balise supprime les boutons dadministration. Cette balise ne peut pas tre utilise dans des squelettes inclus via la syntaxe <INCLURE>.

Manuel de rfrence des boucles et balises

57/186

- La balise #EVAL{argument} value lexpression PHP mise en accolade. Par exemple #EVAL{1+1} affichera 2, #EVAL{_DIR_IMG_PACK} affichera ainsi le chemin vers le rpertoire ecrire/img_pack/. Attention, il est fortement conseill de sen servir avec modration.

- La balise #CACHE{temps} permet de dterminer le dlai au bout duquel le squelette est rinterprt. Le temps est exprim en secondes. Il peut se mettre sous forme de calcul. Par exemple : #CACHE{24*3600}. - La balise #SQUELETTE affiche le chemin du squelette courant. - La balise #VAL{argument} retourne largument entre accolade. Par exemple #VAL{toto} retourne "toto".

Manuel de rfrence des boucles et balises

58/186

Les formulaires
Aot 2002 maj : septembre 2010

SPIP permet une grande interaction du site avec les visiteurs ; pour cela, il propose de nombreux formulaires sur le site public, permettant tantt de grer les accs lespace priv, tantt dautoriser lajout de messages et signatures. Les formulaires sinsrent dans les squelettes par une simple balise ; SPIP se charge ensuite de grer le comportement (souvent complexe) de ces formulaires en fonction de lenvironnement et des configurations effectues dans lespace priv.

Fonctions interactives
- #FORMULAIRE_RECHERCHE Il sagit du formulaire du moteur de recherche intgr SPIP. Il est prsent dans larticle sur les boucles de recherche. - #FORMULAIRE_FORUM Le #FORMULAIRE_FORUM gre linterface permettant de poster des messages dans les forums publics. Il concerne donc en premier chef la boucle FORUMS mais peut tre utilis dans toutes les boucles acceptant un forum :

La boucle ARTICLES, La boucle RUBRIQUES, La boucle BREVES, La boucle SITES (ou SYNDICATION).

Le formulaire dpend videmment du choix des forums modrs a posteriori, a priori ou sur abonnement. Par dfaut, une fois le message post, le visiteur est renvoy vers la page de llment5 [1] auquel il a rpondu. On peut dcider de renvoyer le visiteur vers une autre page en passant une url en paramtre cette balise. Par exemple :
[(#FORMULAIRE_FORUM{'spip.php?page=merci'})]

renverra vers la page

spip ?page=merci.
[(#FORMULAIRE_FORUM{#SELF})]

renverra vers la page o le formulaire de forum est

plac (voir la balise #SELF). Dans le cas (trs spcifique) o lon a autoris la prsence de mots-cls dans les forums publics, on peut affiner le comportement de ce formulaire avec des variables de personnalisation.

article, rubrique, brve, site ou forum

Manuel de rfrence des boucles et balises

59/186

- #FORMULAIRE_SIGNATURE La balise #FORMULAIRE_SIGNATURE affiche un formulaire permettant aux visiteurs du site de signer les ptitions associes aux articles. Cette balise se place donc dans une boucle ARTICLES. La signature des ptitions rclame obligatoirement une validation des signataires par email. Ce formulaire na donc dintrt que si votre hbergeur autorise lenvoi de mails par PHP. - #FORMULAIRE_SITE La balise #FORMULAIRE_SITE affiche un formulaire permettant aux visiteurs du site de proposer des rfrencements de sites. Ces sites apparatront comme proposs dans lespace priv, en attendant une validation par les administrateurs. Ce formulaire ne saffiche que si vous avez activ loption Grer un annuaire de sites dans la Configuration sur site dans lespace priv, et si vous avez rgl Qui peut proposer des sites rfrencs sur les visiteurs du site public . Les sites rfrencs tant, dans SPIP, attachs aux rubriques, on ne peut placer ce qu lintrieur dune boucle RUBRIQUES.

#FORMULAIRE_SITE

- #FORMULAIRE_ECRIRE_AUTEUR Place lintrieur dune boucle AUTEURS, cette balise affiche le formulaire qui permet denvoyer un mail lauteur. Cela permet dcrire aux auteurs sans divulguer leur adresse email sur le site public. Plac dans une boucle ARTICLES, ce formulaire permet denvoyer un mail tous les auteurs de cet article. Plac dans une boucle FORUMS, ce formulaire permet denvoyer un mail directement lauteur du message si lauteur est enregistr sur le site.

Inscription, authentification...
- #FORMULAIRE_INSCRIPTION Sans doute le plus importante, la balise #FORMULAIRE_INSCRIPTION affiche le formulaire permettant linscription de nouveaux rdacteurs. Celui-ci ne saffiche que si vous avez autoris linscription automatique depuis le site public (sinon, cette balise naffiche rigoureusement rien). Linscription ncessite lenvoi des informations de connexion (login et mot de passe) par email ; ce formulaire ne fonctionne donc que si votre hbergeur autorise lenvoi de mails par PHP. - [(#FORMULAIRE_INSCRIPTION{forum})] Est lquivalente de la prcdente, pour linscription des visiteurs, appels crire dans les forums (rservs aux visiteurs enregistrs), option qui se dtermine dans la partie prive

Manuel de rfrence des boucles et balises

60/186

configuration/interactivit/Mode de fonctionnement par dfaut des forums publics. Le paramtre forum correspond lintitul du statut dauteur dsir lors de linscription. Aprs la validation, un message avertit le visiteur : "Votre nouvel identifiant vient de vous tre envoy par email." - #LOGIN_PRIVE Tout aussi importante (sinon plus), cette balise affiche le formulaire daccs lespace priv (la partie /ecrire du site). Important : cette balise doit imprativement tre prsente dans le squelette appel par la page spip.php?page=login, cest--dire dans le squelette nomm login.html. En effet, lors des accs directs ladresse /ecrire de votre site, cest vers spip.php?page=login que SPIP va vous rediriger. - #LOGIN_PUBLIC Dune utilisation beaucoup plus spcifique, la balise #LOGIN_PUBLIC affiche un formulaire permettant vos utilisateurs de sidentifier tout en restant sur le site public (sans entrer dans lespace priv). Cette balise sert notamment authentifier les visiteurs pour les sites proposant des forums modrs sur abonnement. Elle peut aussi servir de brique de base pour restreindre laccs certains contenus sur le site public : mais cela reste dun maniement complexe, et ncessitera encore des dveloppements et la rdaction de tutoriels complets avant dtre facilement utilisable par tous ; nanmoins, un exemple dutilisation avance est donn plus bas. Le #LOGIN_PUBLIC, par dfaut, boucle sur lui-mme , cest--dire que le formulaire revient sur la page o il se trouve. On peut cependant indiquer une page vers laquelle le formulaire mnera, sous la forme :
[(#LOGIN_PUBLIC{#URL_PAGE{mapage}})]

Si votre site offre une inscription automatique lespace priv, les donnes de connexion lespace public sont identiques celles de lespace priv ; cest--dire que les donnes envoyes lutilisateur pour sidentifier lespace public lui permettent galement daccder lespace priv. Si, au contraire, vous avez interdit linscription automatique lespace priv, il faut imprativement avoir au moins un article dont les forums seront rgls en mode sur abonnement pour activer cette balise ; ds lors, SPIP pourra fournir des informations de connexion pour le site public sans accs lespace priv. - #URL_LOGOUT est le pendant de #LOGIN_PUBLIC ; il donne une URL permettant un visiteur authentifi de se dconnecter. Noter que #URL_LOGOUT tant une balise dynamique, elle renverra toujours quelque chose de sorte que les parties conditionnelles (La syntaxe des balises SPIP) de la balise seront toujours affiches. Ainsi une notation du type [<a href="(#URL_LOGOUT)">dconnexion</a>] retournera le source html <a href="">dconnexion</a> lorsque le visiteur nest pas connect. Pour un affichage conditionnel du lien de dconnexion, voir plus bas. On peut passer un paramtre cette balise pour spcifier ladresse de retour aprs la dconnexion. Par exemple [(#URL_LOGOUT{spip.php?page=sommaire})] renverra vers la page de sommaire.

Manuel de rfrence des boucles et balises

61/186

Voici un exemple simple, mais complet, dutilisation de ces deux balises. Il faut passer par un peu de php pour tester la variable $auteur_session, qui indique quun auteur est identifi ou non. Si cest le cas, on peut rcuprer (voire tester) son statut, son login, etc., via $auteur_session['statut'].... Notez bien que le contenu nest scuris que sur ce squelette. Si votre squelette imprimer cet article , par exemple, ne vrifie pas $auteur_session, tout le monde (y compris les moteurs de recherche !) pourra avoir accs ce fameux contenu que vous souhaitez protger.
<?php if ($auteur_session) { ?> Vous tes authentifi, <a href='#URL_LOGOUT'>cliquez ici pour vous dconnecter</a> ... ici le contenu en accs restreint.... <?php } else { ?> <h2>Cette partie est en accs restreint</h2> #LOGIN_PUBLIC <?php } ?>

Depuis SPIP 2.0, il nest plus utile dutiliser du code php dans votre squelette ; vous pouvez dsormais crire :
[(#LOGIN_PUBLIC|non) [<a href="(#SESSION|oui) #URL_LOGOUT">dconnexion</a> ] ]

pour afficher au choix le formulaire de login ou le lien de dconnexion en fonction de ltat (identifi/pas identifi) du visiteur.

Styles
On peut sensiblement modifier linterface graphique des formulaires par lintermdiaire des feuilles de style. Voir : Ils sont beaux, mes formulaires ! .

Manuel de rfrence des boucles et balises

62/186

Les filtres de SPIP


Mai 2001 maj : octobre 2010

Nous avons vu dans la syntaxe des balises SPIP quil tait possible de modifier le comportement et laffichage des balises en leur attribuant des filtres.
[ option avant (#BALISE|filtre1|filtre2|...|filtren) option aprs ]

Les filtres 1, 2, ..., n sont appliqus successivement la #BALISE.

Les filtres de mise en page


Les filtres de mise en page suivants (majuscules, justifier...) ne sont plus conseills. Il est recommand de leur prfrer, dsormais, lutilisation des styles CSS correspondants. - majuscules fait passer le texte en majuscules. Par rapport la fonction de PHP, majuscules sapplique galement aux lettres accentues. - justifier fait passer le texte en justification totale (<P align=justify>). - aligner_droite fait passer le texte en justification droite (<P align=right>). - aligner_gauche fait passer le texte en justification gauche (<P align=left>). - centrer centre le texte (<P align=center>).

Les filtres des dates


Les filtres suivants sappliquent aux dates ([(#DATE|affdate)] par exemple). - affdate affiche la date sous forme de texte, par exemple 13 janvier 2001 . On peut lui passer un paramtre de formatage de la date, correspondant un format spip ( 'saison' , etc.) ou un format de la commande php date ( 'Y-m-d' ). Par exemple :
[(#DATE|affdate{'Y-m'})]

affichera numriquement lanne et le mois de la date

filtre spars par un tiret, la notation [(#DATE|affdate{'saison'})] est totalement quivalente : [(#DATE|saison)].

- Il existe aussi des variantes de affdate qui fournissent des raccourcis : affdate_jourcourt affiche le nom du mois et la valeur numrique du jour, e.g. 19 Avril . Si la date nest pas dans lanne actuelle, alors lanne est aussi affiche : 1 Novembre 2004 . affdate_court affiche le nom du mois et le numros du jour, e.g. 19 Avril . Si la date nest pas dans lanne actuelle, alors on affiche seulement le mois et lanne sans le numros du jour : Novembre 2004 .

Manuel de rfrence des boucles et balises

63/186

affdate_mois_annee affiche seulement le mois et lanne : Avril 2005 , Novembre 2003 . - jour affiche le jour (en nombre). - mois affiche le mois (en nombre). - annee affiche lanne. - heures affiche les heures dune date (les dates fournies par SPIP contiennent non seulement le jour, mais galement les horaires). - minutes affiche les minutes dune date. - secondes affiche les secondes. - nom_jour affiche le nom du jour (lundi, mardi...). - nom_mois affiche le nom du mois (janvier, fvrier...). - saison affiche la saison (hiver, t...). - Le filtre unique retourne la valeur de llment filtr seulement si cest la premire fois quelle est rencontre. Ce filtre nest pas limit aux dates mais est intressant pour, par exemple, afficher une liste darticles par date :
<BOUCLE_blog(ARTICLES){par date}{inverse}{"<br>"}> [<hr /><h1>(#DATE|affdate_mois_annee|unique)</h1>] #TITRE ... </BOUCLE_blog>

cette balise naffichera la date qu chaque changement de mois. Voici un autre exemple :
<BOUCLE_blog2(ARTICLES){par date}{inverse}> [<hr /><h1>(#DATE|annee|unique)</h1>] [<h2>(#DATE|affdate{'Y-m'}|unique|nom_mois)</h2>] <a href="#URL_ARTICLE">#TITRE</a><br /> </BOUCLE_blog2>

affichera une liste ressemblant :


2005 mars article de mars autre article de mars fvrier article de fvrier 2004 dcembre un article

On utilise la notation affdate{'Y-m'} pour afficher le nom du mois chaque anne. En effet :

Manuel de rfrence des boucles et balises

64/186

si lon ne faisait que #DATE|nom_mois|unique, les noms de mois ne seraient affichs que la premire anne. si le filtrage tait : #DATE|unique|nom_mois, on afficherait toutes les dates. En effet, #DATE retourne une date complte qui contient aussi lheure. Il y a donc une grande chance que les dates compltes de deux articles publis le mme jours soient diffrentes.

Cest pourquoi on garde juste le mois et lanne de la date avant de la passer au filtre unique. On peut passer un argument optionnel ce filtre pour diffrencier deux utilisations indpendantes du filtre. Par exemple : [(#DATE|affdate_mois_annee|unique{ici})] naura pas dincidence sur [(#DATE|affdate_mois_annee|unique{la})].

Filtres de texte
- liens_ouvrants transforme les liens SPIP qui donnent vers des sites extrieurs en liens de type popup , qui ouvrent dans une nouvelle fenetre ; cest lquivalent du target=blank du HTML. N.B. : les dveloppeurs de SPIP estiment quil sagit en gnral dune impolitesse, car les internautes savent trs bien sils ont envie ou pas douvrir une nouvelle fentre - or ce systme le leur impose. Mais la demande tait trop forte, et nous avons craqu ;-) - supprimer_numero sert liminer le numro dun titre, si par exemple on veut faire des tris darticles {par num titre} mais ne pas afficher les numros (car ils ne servent qu ordonner les articles). Le format des prfixes numerots est XX. titre , XX tant un nombre n chiffres (illimit). - PtoBR transforme les sauts de paragraphe en simples passages a la ligne, ce qui permet de resserrer une mise en page, par exemple lintrieur dun sommaire - taille_en_octets permet de transformer un nombre doctets (25678906) en une chane de caractres plus explicite ( 24.4 Mo ). - supprimer_tags est une suppression basique et brutale de tous les <...> - textebrut sapparente au filtre supprimer_tags, mais il agit de manire un peu plus subtile, transformant notamment les paragraphes et <br> en sauts de ligne, et les espaces inscables en espaces simples. Il sutilise, par exemple, pour faire un descriptif META :
[<meta name="description" content="(#DESCRIPTIF|textebrut)">]

- texte_backend peut tre utilis pour transformer un texte et le rendre compatible avec des flux XML. Ce filtre est utilis, par exemple, dans le squelette backend.html qui gnre le fil RSS du site. - couper coupe un texte aprs un certain nombre de caractres. Il essaie de ne pas couper les mots et enlve le formatage du texte. Si le texte est trop long, alors (...) est ajout la fin. Ce filtre coupe par dfaut 50 caractres, mais on peut spcifier une autre longueur en passant un paramtre au filtre, par exemple : [(#TEXTE|couper{80})]. - lignes_longues coupe les mots trops longs (utile si lon a, par exemple, des urls afficher dans une colone troite). Ce filtre coupe par dfaut 70 caractres, mais on peut

Manuel de rfrence des boucles et balises

65/186

spcifier une autre longueur en passant un paramtre au filtre, par exemple : [(#URL_SITE|lignes_longues{40})]. - match utilise une expression rgulire (cf. preg_match()) pour extraire un motif dans le texte si il est prsent, ne retourne rien sinon. Par exemple pour rcuprer le premier mot du titre [(#TITRE|match{^\w+?})]. Ce peut tre un texte simple, afficher "toto" si dans le titre :
[(#TITRE|match{toto})]

- replace utilise aussi une expression rgulire (cf. preg_replace()) pour supprimer ou remplacer toutes les occurences dun motif dans le texte. Avec un seul parametre, une expression rgulire, le motif sera remplac par une chane, cest dire supprim. Par exemple pour supprimer tous les "notaXX" du texte [(#TEXTE|replace{nota\d*})]. Lorsquun deuxime paramtre est fourni, les occurences du motif seront remplaces par cette valeur. Par exemple pour remplacer tous les 2005 ou 2006 du texte en 2007 [(#TEXTE|replace{200[56],2007})]. Ce peut tre des textes simples, remplacer tous les "au temps" par "autant" : [(#TEXTE|replace{au temps,autant})]

Filtres de test
- Le filtre |sinon, qui indique ce quil faut afficher si llment filtr est vide : ainsi [(#TEXTE|sinon{"pas de texte"})] affiche le texte ; si celui-ci est vide, affiche pas de texte . - Le filtre |?{sioui,sinon} est une version volue de |sinon. Il prend un ou deux paramtres :

sioui est la valeur afficher la place de llment filtr si celui-ci est non vide. sinon est optionnel. Cest la valeur afficher si llment filtr est vide. [(#TEXTE|?{#TEXTE,"pas de texte"})] est quivalent lexemple donn pour le filtre |sinon.

- Jeu de filtres pour faire des comparaisons avec des valeurs :


|=={valeur} et |!={valeur} permettent de vrifier, respectivement, lgalit ou lingalit entre llment filtr et valeur. Par exemple : <li [(#TITRE|=={dito}|?{'id="edito"',''})]>#TITRE</li> |>{valeur}, |>={valeur}, |<{valeur}

et |<={valeur} comparent llment filtr (qui doit tre numrique) avec une valeur numrique. Par exemple :

[(#TOTAL_BOUCLE) [(#TOTAL_BOUCLE|>{1}|?{'articles','article'})] dans cette rubrique.] Remarque : De manire gnrale, tous les oprateurs de comparaison de php peuvent tre utiliss comme filtres.

Filtres de logos
- fichier Affect un logo, ce filtre permet de rcuprer directement le nom de fichier correspondant au logo.

Manuel de rfrence des boucles et balises

66/186

- ||autres filtres (jusqu' SPIP 2) permet de passer des filtres maison sur les logos, la logique est un peu tordue. Lanalyse se droule comme suit :

si le premier filtre nest pas un alignement, SPIP considre quil sagit dun URL et fait un lien du logo vers cette adresse ; si le premier filtre est un alignement, SPIP considre que le deuxime filtre est un URL ; les filtres suivants sont de vrais filtres au sens habituel (y compris des filtres maison dclars dans mes_fonctions.php ; pour appliquer un filtre quelconque sans mettre dURL, il faut mettre deux barres. Par exemple : <?php $logo = '[(#LOGO_RUBRIQUE||texte_script)]'; ?> permet de rcuprer le logo dans la variable php $logo, pour traitement ultrieur (voir ci-dessous pour la signification de |texte_script).

Depuis SPIP 2.1 les filtres de logos ont la mme syntaxe que tous les autres. Un seul pipe suffit :
[(#LOGO_XXX|filtre)]

Mais : - #LOGO_XXX** renvoie le fichier - #LOGO_XXX{top/left/right/center/bottom} gnre un alignement - #LOGO_XXX{url} gnre un logo qui pointe vers lurl. - Les filtres hauteur et largeur retournent les informations sur la taille (i.e. Hauteur et Largeur) de llment filtr si cest une image. Ces filtres nont quun intrt moyen tre appliqus directement un logo de document puisquil y a dj #HAUTEUR et #LARGEUR disposition pour les documents. Par contre, on peut les appliquer aprs le filtre image_reduire pour connatre la taille exacte de limage rduite. Plus gnralement, on peut les appliquer sur nimporte quelles balises (ou filtre) retournant un balise HTML <img ...>.

- |image_reduire{largeur,hauteur} permet de forcer une taille maximale daffichage des images et des logos. Ce filtre sutilise par exemple sur un logo darticle de la faon suivante :
[(#LOGO_ARTICLE|right||image_reduire{130})]

Dans cet exemple, le logo de larticle apparat align droite, une taille maximale de 130 pixels. Ce filtre peut prendre deux arguments : largeur et hauteur. Si lun de ces deux arguments est gal 0, SPIP ne tient compte que de lautre et calcule cette dimension en conservant les proportions de limage. De plus, ce filtre sapplique aussi la balise #TEXTE et ce sont alors toutes les images que le rdacteur introduit dans le texte grce aux raccourcis SPIP qui sont alors rduites.

Manuel de rfrence des boucles et balises

67/186

Ainsi, par exemple :


[(#TEXTE|image_reduire{600,0})]

affiche toutes les images insres dans le fil du texte une largeur maximale de 600 pixels. Cela permet de prserver la mise en page mme sans que le rdacteur ait se soucier de la taille des images quil tlcharge sur le site. NB. : Si loption cration de vignettes est active dans la configuration du site, ces logos rduits seront des fichiers dimages spcifiques calculs automatiquement par le serveur (idalement, avec lextension GD2 installe sur le serveur), pour les formats accepts par le serveur (avec GD2, habituellement, les formats JPG et PNG). Sinon, cest une version complte de limage qui est affiche, mais avec une taille daffichage fixe directement en HTML.

Manuel de rfrence des boucles et balises

68/186

Les filtres mathmatiques


SPIP 1.9 introduit une srie de filtres doprations mathmatiques. - |plus{xx}, |moins{xx} et |mult{xx} correspondent respectivement laddition, la soustraction et la multiplication. - |div{xx} correspond la division non-euclidienne ("aprs la virgule"). - |modulo{xx} correspond au reste de la division euclidienne par xx dun nombre. Par exemple [(#COMPTEUR_BOUCLE|modulo{5})] compte de 0 4 puis revient 0 etc De plus lensemble des fonctions mathmatiques PHP peuvent tre utilises comme filtres.

Autres Filtres
- traduire_nom_langue sapplique la balise #LANG et retourne un traduction du code de langue quelle retourne (fr, en, it, etc.) dans cette langue. Remarque : Les traductions des codes sont faites dans la langue que reprsente ce code et suivent les conventions dcriture de cette langue. Ainsi fr sera traduit franais en minuscule, alors que es sera traduit Espaol avec une majuscule. - alterner{a,b,c,...} sapplique une balise numrique (en gnral #COMPTEUR_BOUCLE ou #TOTAL_BOUCLE) et affiche largument correspondant la valeur de cette balise . On peut ainsi alterner un affichage dans une boucle. Par exemple, [(#COMPTEUR_BOUCLE|alterner{'white','yellow'})] affichera white la premire itration de la boucle, yellow la deuxime, white la troisime, yellow la quatrime, etc. Ainsi, on peut faire une liste darticle qui utilise une couleur diffrente pour les lignes paires et impaires :
<B_lesarticles> <ul> <BOUCLE_lesarticles(ARTICLES) {par titre}> <li style="background: [(#COMPTEUR_BOUCLE|alterner{'white','yellow'})]">#TITRE</li> </BOUCLE_lesarticles> </ul> </B_lesarticles>

- inserer_attribut{attribut,valeur} permet dajouter un attribut html dans une balise html gnre par SPIP. Par exemple : [(#LOGO_DOCUMENT||inserer_attribut{'alt',#TITRE})] va ajouter un attribut alt avec le titre du document dans la balise img du logo. - extraire_attribut{attribut} est linverse du filtre prcdent. Il permet de rcuprer un attribut dune balise html gnre par SPIP. Par exemple, on peut trouver le chemin de la vignette gnre par le filtre

Manuel de rfrence des boucles et balises

69/186

- vider_attribut{attribut} est une variante de inserer_attribut. Il permet de supprimer les attribut html. Exemple [(#LOGO||vider_attribut{width})] enlever lattribut width sur limage dun logo (quelle ide !) image_reduire : <div style="background: url([(#LOGO_ARTICLE||image_reduire{90}|extraire_attribut{src})]) left;"]>#TEXTE</div> - parametre_url{parametre,valeur} est un filtre qui permet dajouter des paramtres dans une url gnre par une balise SPIP. Si valeur vaut '' le filtre supprime un paramtre actuellement dans lurl. Par exemple, la balise #SELF retourne lurl de la page actuelle, donc :
[(#SELF|parametre_url{'id_article','12'})]

placera une variable id_article

gale 12 dans lurl,


[(#SELF|parametre_url{'id_article',''})]

effacera lid_article actuellement

dans lurl. Employ avec un seul paramtre le filtre agit diffremment : #URL...|parametre_url{x} extrait le parametre x de lurl et en retourne la valeur. On peut par exemple lutiliser pour faire des boutons pour naviguer parmi les documents sur une page :
<BOUCLE_actuel(DOCUMENTS) {id_document}> #LOGO_DOCUMENT <ul> <BOUCLE_precede(DOCUMENTS) {par date} {age_relatif <= 0} {0,1} {exclus}> <li> <a href="[(#SELF|parametre_url{'id_document',#ID_DOCUMENT})]" title="prcdent"> [(#LOGO_DOCUMENT||image_reduire{70})] </a> </li> </BOUCLE_precede> <BOUCLE_suivant(DOCUMENTS) {par date} {age_relatif > 0}{0,1}> <li> <a href="[(#SELF|parametre_url{'id_document',#ID_DOCUMENT})]" title="suivant"> [(#LOGO_DOCUMENT||image_reduire{70})] </a> </li> </BOUCLE_suivant> </ul> </BOUCLE_actuel>

ancre_url{ancre} ajoute un modifie une ancre une url. Par exemple [(#URL_ARTICLE|ancre_url{ancre})].

Filtres techniques
- entites_html transforme un texte en entits HTML, que lon peut donc implanter dans un formulaire, exemple : [<textarea>(#DESCRIPTIF|entites_html)</textarea>] - texte_script transforme nimporte quel champ en une chane utilisable en PHP ou Javascript en toute securit, exemple : <?php $x = '[(#TEXTE|texte_script)]'; ?>. Attention : utilisez bien le caractre ' et non " : en effet, dans le second cas, si votre texte Manuel de rfrence des boucles et balises 70/186

contient le symbole $, le rsultat peut tre catastrophique (affichage partiel, affichage dautre chose, plantage php, etc.). - attribut_html rend une chane utilisable sans dommage comme attribut HTML ; par exemple, si lon veut ajouter un texte de survol au lien normal vers un article, on utilisera <a
href="#URL_ARTICLE"[ title="(#DESCRIPTIF|attribut_html|couper{80})"]>#TITRE</a>.

- liens_absolus sapplique sur une balise de texte et transforme tous les liens que celui-ci contient en liens absolus, en prfixant le protocole (http ou https) et le nom dhte courants. Ce filtre est particulirement utile dans des squelettes de fil rss par exemple. Pour forcer une certaine URL de base, il est possible de la passer en argument, par exemple
#TEXTE|liens_absolus{#URL_SITE_SPIP}

- url_absolue marche de la mme faon que le filtre prcdent, mais sapplique une balise qui retourne une url (par exemple #URL_ARTICLE). Tout comme le filtre liens_absolus, ce filtre accepte une URL de base comme paramtre optionnel. - abs_url combine les deux balises prcdentes et peut donc sappliquer un texte ou une balise durl. Il accepte le mme paramtre optionnel. - form_hidden Si on fait un formulaire qui utilise comme action un lien comprenant des arguments (par exemple, quand on utilise la balise #SELF avec le type durl par defaut), il faut remettre ces valeurs dans des champs hidden ; cette fonction calcule les champs en question. A utiliser par exemple :
<form action="#SELF"> [(#SELF|form_hidden)] ... </form>

- Le filtre |compacte permet de rduire la taille dun CSS ou dun javascript en supprimant tout les commentaires. Le filtre prend en entre le nom du fichier, et produit un nouveau fichier dont il renvoie le nom <link rel="stylesheet"
href="[(#CHEMIN{spip_style.css}|compacte)]" type="text/css" media="all" />.

- Un nombre dautres filtres techniques sont rfrencs dans le chapitre "filtres".

Ajouter ses propres fonctions


Les filtres de SPIP sont des fonctions PHP qui reoivent la balise sur laquelle ils sont appliqus en premier paramtre et retournent le texte afficher. Vous pouvez utiliser directement les fonctions habituelles de PHP, mais galement crer les vtres, sur le modle :
<?php function mon_filtre($texte){ $texte = (bidouillages en PHP) ...; return $texte; } ?>

Afin de ne pas avoir modifier des fichiers de SPIP (qui risqueraient dtre crass lors dune prochaine mise jour), vous pouvez installer vos fonctions personnelles dans un fichier mes_fonctions.php : si SPIP repre un fichier ayant ce nom, il linclut automatiquement. Manuel de rfrence des boucles et balises 71/186

Il peut se situer :

dans le dossier o sont stocks vos squelettes la racine du site Mais jamais dans les deux la fois.

Il est possible de dfinir des filtres applicables uniquement un squelette particulier. Par exemple, on crera, dans un fichier article_fonctions.php, des filtres qui ne seront effectifs que dans le squelette article.html. attention : ce fichier xxxx_fonctions.php devra se trouver au mme niveau (dans le mme rpertoire) que le squelette xxxx.html.

Filtres avec des paramtres


Il est possible de passer des paramtres dans les filtres. La syntaxe est :
[(#BALISE|filtre{arg1, arg2}|...)]

Le filtre doit tre dfini de la manire suivante dans mes_fonctions.php :


function filtre($texte, $arg1='valeur par defaut1', $arg2='valeur par dfaut 2') { ....calculs.... return (une chaine de caractres); }

On peut ainsi appeler nimporte quelle fonction php, ou sappuyer sur des fonctions dfinies dans SPIP ou dans mes_fonctions.php, pour peu quelles respectent lordre des arguments (le texte traiter doit tre imprativement le premier argument). Par exemple, pour enlever les points la fin dun texte, on pourra faire : [(#TEXTE|rtrim{'.?!'})]. Les arguments des filtres peuvent tre des balises (sans codes optionnels ni filtres). Par exemple :
[(#TOTAL_BOUCLE|=={#COMPTEUR_BOUCLE}|?{'Fin.',''})]

On peut mettre un balise avec notation tendue en paramtre. Par exemple :


[(#DESCRIPTIF|sinon{[(#CHAPO|sinon{#TEXTE}|couper{300})]})]

Manuel de rfrence des boucles et balises

72/186

Les boucles rcursives


Mai 2001 maj : Fvrier 2009

Les boucles rcursives offrent une fonctionnalit trs puissante de mise en page de structure hirarchique. Leur criture est concise, mais leur utilisation demande une bonne matrise logique de lenchanement des boucles. Pour construire une boucle rcursive, il suffit dindiquer dans son TYPE le nom dune boucle contenant celle quon crit :
<BOUCLEx ....> .... <BOUCLEn(BOUCLEx)></BOUCLEn> .... </BOUCLEx>

La boucle n fonctionne comme si lon avait recopi lintgralit de la boucle x (toutes les balises et le code HTML, ainsi que les textes conditionnels avant, aprs et alternatif) lendroit o lon insre la boucle n. La boucle n tant lintrieur de la boucle x, on obtient un comportement rcursif : la boucle x contient une boucle n, qui elle-mme reproduit la boucle x qui contient la boucle n, et ainsi de suite, jusqu ce que la boucle x ne donne plus aucun rsultat. Aucun critre ne figure dans la boucle n, le changement de contexte chaque appel de la boucle x devant conduire les critres de celle-ci ne plus trouver aucun lment. Cette technique permet de crer notamment laffichage des threads des forums. Une premire boucle fabrique lentre des threads (les messages qui rpondent directement un article), une seconde boucle affiche les rponses ces messages, et une boucle rcursive provoque la rcursivit sur cette seconde boucle :
<BOUCLE_forum(FORUMS){id_article}> #TITRE <B_reponses> <UL> <BOUCLE_reponses(FORUMS){id_parent}> <LI>#TITRE <BOUCLE_recursive(BOUCLE_reponses)> </BOUCLE_recursive> </LI> </BOUCLE_reponses> </UL> </B_reponses> </BOUCLE_forum>

Plus gnralement, cette fonctionnalit provoque un affichage graphiquement trs clair de structures arborescentes, en particulier la hirarchie des rubriques de votre site. Remarque 1 : Le compilateur considre que la notation <BOUCLEn(BOUCLEx)> lextrieur de la boucle x est vide de sens, ce qui lui permet datteindre loptimalit du nombre de champs des requtes SQL quil produit, pour tout type de boucles. Cet emploi nest pas une rcursion mais une inclusion, fonctionnalit laquelle rpond la balise INCLURE, nettement prfrable.

Manuel de rfrence des boucles et balises

73/186

Remarque 2 : Dans ltat actuel du compilateur de SPIP, la squence <BOUCLEn(BOUCLEx)></BOUCLEn> doit figurer au premier niveau de la boucle x, autrement dit la boucle n doit tre immdiatement englobe par la boucle x, non par une autre boucle elle-mme lintrieur de la boucle x. La leve de cette restriction est ltude. Remarque 3 : On peut appeler une balise homonyme de lune des boucles englobantes en explicitant le nom de la boucle laquelle la balise appartient. Il faut alors spcifier le nom de la boucle entre le # et le nom de la balise. Plus de dtail dans larticle la syntaxe des balises SPIP. On crira alors la balise #BALISE de la boucle _boucle [1] de la faon suivante : #_boucle:BALISE.

Manuel de rfrence des boucles et balises

74/186

La gestion des dates


Mai 2003 maj : Novembre 2008

Voici une liste de critres et de balises pour mieux grer les dates des articles.

Afficher les dates


- #DATE est la date de mise en ligne. (Modifiable aprs la mise en ligne de larticle, de la brve, etc. La date dune rubrique est celle de son lment le plus rcent.) - #DATE_REDAC est la date de premire publication. (Modifiable volont, disponible sur les articles seulement.) - #DATE_MODIF cette balise dsigne la date de dernire modification de larticle. - #DATE_NOUVEAUTES permet dafficher la date du dernier envoi du mail prsentant les nouveauts.

Formater les dates


Si les balises #DATE... sont utilises sans filtre, alors toutes les informations de date sont affiches dans un format numrique (au format MySQL) : 2001-12-01 03:25:02 . Les filtres |annee, |mois, |jour, |heures, |minutes, |secondes, mais aussi |affdate, |date_relative, |nom_mois, |nom_jour, |saison, etc. sappliquent pour permettre tous les affichages habituels sous divers formats. Une liste complte des filtres pouvant tre appliqus aux dates est fournie dans larticle les filtres de SPIP.

Contexte de date
SPIP fournit toutes les boucles un contexte de date. Si lon se trouve lintrieur dune boucle (ARTICLES), (BREVES) ou (RUBRIQUES), la date en question est la date de publication de larticle, de la brve ou la date de dernire modification de la rubrique. Si en revanche on se trouve au premier niveau du squelette (cest--dire en-dehors de toute boucle), la date considre est la date du jour - moins quon ait pass une date dans lURL de la page (voir lexemple plus bas). Dans ce dernier cas, et pour les versions de php suprieures 3.0.12, la date passe dans lURL est analyse avec la fonction strtotime : ainsi ?date=2003, ?date=2003/01 fonctionneront, mais aussi date=-1year (il y a un an), ?date=1march1970 (articles publis le 1er mars 1970), etc.

Critre de date, dge, et dge relatif


Le critre {age} permet de slectionner les articles en fonction de la dure qui spare leur date de publication en ligne avec la date courante. Ainsi {age<30} permettra de ne pas afficher les articles gs de plus de 30 jours.

Manuel de rfrence des boucles et balises

75/186

L{age_relatif} permet de comparer les dates de publication de deux articles : si lon vient de slectionner un article dans une boucle, une seconde boucle place lintrieur de la premire pourra demander les articles publis dans la semaine qui prcde celui-ci, via {age_relatif<=7}{age_relatif>=0}, etc. Les critres {age} et {age_relatif} permettent de distinguer deux articles publis le mme jour. On peut donc programmer des boucles pour obtenir larticle prcdent ou le suivant :
<BOUCLE_art(ARTICLES){id_article}> <BOUCLE_precedent(ARTICLES){age_relatif>=0}{par date}{inverse}{1,1}> prcdent : <a href='#URL_ARTICLE'>#TITRE</a> #DATE </BOUCLE_precedent> <br /> <b>#TITRE</b> - #DATE <br /> <BOUCLE_suivant(ARTICLES){age_relatif<0}{par date}{0,1}> suivant : <a href='#URL_ARTICLE'>#TITRE</a> #DATE </BOUCLE_suivant> </BOUCLE_art>

Attention ! Malgr les apparences les comparaisons de date sont dun maniement dlicat : en effet, cause des dates floues (un article publi un mois donn, sans que le jour soit prcis), le calcul de lage_relatif peut donner la valeur zro dans un sens, et pas dans lautre ! Do la dissymtrie des boucles prsentes ci-dessus : dans un sens on cherche le second plus rcent des articles {age_relatif>=0} (car le plus rcent, avec la comparaison non-stricte, ne peut tre que larticle lui-mme) ; dans lautre le plus g des articles publis strictement plus tard. Les critres {jour_relatif}, {mois_relatif} et {annee_relatif} fonctionnent comme lage_relatif, mais prennent en compte des dates arrondies au jour, au mois et lanne respectivement ; par exemple, si lURL comporte la variable ?date=2003-01-01, la boucle suivante donnera tous les les articles du mois de mars 2003
<h3>Articles de [(#DATE|nom_mois)] [(#DATE|annee)]:</h3> <BOUCLE_blog(ARTICLES){mois_relatif=0}{par date}{"<br />"}> <a href='#URL_ARTICLE'>#TITRE</a> ([(#DATE|jour)]/[(#DATE|nom_mois)] </BOUCLE_blog>

La date de rdaction antrieure


Si vous avez activ lutilisation des dates de publication antrieure, la plupart des critres prsents ci-dessus fonctionnent : il suffit dajouter _redac au critre. Ainsi {age_redac>365} affichera les articles dont la date de publication antrieure remonte plus dun an. Si une boucle slectionne un article dont la date_redac est dfinie, une boucle interne comportant le critre {annee_relatif_redac=0} ira chercher les articles dont la date de publication antrieure appartient la mme anne.

Manuel de rfrence des boucles et balises

76/186

Un exemple de sommaire de site tri par date


A titre dexemple, voici comment on peut afficher tous les articles dun site, tris par mois de publication :
<BOUCLE_articlem(ARTICLES){par date}{inverse}> <BOUCLE_premierdumois(ARTICLES){id_article}{doublons}> <b> [(#DATE|nom_mois|majuscules)] [(#DATE|annee)] </b> <ul> <li><a href="#URL_ARTICLE">[(#TITRE|couper{50})]</a> [(#DATE|jour)]/[(#DATE|mois)]</li> </BOUCLE_premierdumois> <BOUCLE_MOIS(ARTICLES) {mois_relatif=0}{doublons}{par date}{inverse} > <li><a href="#URL_ARTICLE">[(#TITRE|couper{50})]</a> [(#DATE|jour)]/[(#DATE|mois)]</li> </BOUCLE_MOIS> </ul> </BOUCLE_articlem>

Manuel de rfrence des boucles et balises

77/186

Balises
#AIDER
juillet 2010

La balise #AIDER{} permet dafficher licone de laide

au sein de vos squelettes.

Cette balise prend comme argument la clef du titre du sous-menu affich dans liframe de gauche de laide en ligne. Elle cre ainsi un lien (ouvrant un popup ) vers ce paragraphe prcis de laide. Exemple : fabriquera le lien cliquable (popup) vers le paragraphe Installer des fichiers par FTP ou SCP de laide en ligne.
#AIDER{ins_upload}

Pour connatre tous les points dentre (tous les arguments) utilisables, se reporter larticle tendre laide en ligne. Attention : la balise #AIDER doit obligatoirement recevoir un argument. #AIDER seule dans un squelette provoquera une erreur ; si vous dsirez nappeler que le menu de laide en ligne en gardant vide liframe de droite il faut crire : #AIDER{' '} (donner comme argument un espace entre deux apostrophes).

#ANCRE_PAGINATION
Mars 2010

La balise #PAGINATION cre (par dfaut) une ancre html qui permet au navigateur dafficher directement la partie de la page qui est pagine ; toutefois on peut vouloir par exemple placer les liens de pagination en dessous dune liste darticles, mais, dans un mme temps, vouloir placer lancre au-dessus de cette liste. Cest cela que sert la balise #ANCRE_PAGINATION, qui cre lancre en question, et interdit la balise #PAGINATION suivante de placer la sienne.
<B_page> #ANCRE_PAGINATION <ul> <BOUCLE_page(ARTICLES) {par date} {pagination}> <li>#TITRE</li> </BOUCLE_page> </ul> #PAGINATION </B_page>

Manuel de rfrence des boucles et balises

78/186

#ARRAY
Juin 2009 maj : aot 2010

La balise #ARRAY peut contenir un tableau PHP, cest--dire un ensemble de paires cl/valeur, que lon veut stocker pour les rutiliser dans la suite du squelette. Le tableau doit tre dclar par la balise #SET et peut ensuite tre rcupr par la balise #GET [1]. Il peut tre utilis ensuite, entre autres, associ au critre IN dune boucle.

Dclarer un tableau et rcuprer des valeurs - #SET{mon_tableau, #ARRAY{cle1,valeur1,cle2,valeur2}} cre la variable mon_tableau et lui affecte un tableau PHP comme valeur, qui pourrait tre reprsent comme suit : Cls Valeurs cle1 valeur1 cle2 valeur2 Il nest pas ncessaire dentourer les chaines de caractres avec des guillemets simple ou double, sauf pour spcifier une chaine vide qui scrira - des fins de test, on peut afficher le tableau grce au filtre |foreach.
[(#GET{mon_tableau}|foreach)]

affichera :

cle1=> valeur1 cle2=> valeur2

- La valeur associe une cl donne peut tre rcupre en utilisant le filtre |table_valeur :
[(#GET{mon_tableau}|table_valeur{cle1})]

retourne valeur1.

- Vrifier la prsence dune valeur dans le tableau avec le filtre |find [2] :
[(#GET{mon_tableau}|find{valeur2}|oui) Ceci s'affiche si la valeur est dans le tableau. ]

Remplir un tableau dynamiquement Un intrt des tableaux est de les remplir dynamiquement, par les rsultats dune ou plusieurs boucle(s). Le tableau doit alors tre dclar par un #SET avant la boucle : #SET{mon_tableau,#ARRAY}

Manuel de rfrence des boucles et balises

79/186

Dans la boucle, un nouveau #SET redfinit mon_tableau chaque itration : on le rcupre par #GET et on y ajoute une nouvelle valeur grce aux filtres |push ou |array_merge.
#SET{mon_tableau,#ARRAY} <BOUCLE(...)> #SET{mon_tableau, #GET{mon_tableau}|push{#COMPTEUR_BOUCLE}} </BOUCLE>

Lordre des valeurs du tableau dpend des critres de tri de la boucle. - |push ajoute simplement une valeur la fin du tableau. La cl est indexe automatiquement : elle est incrmente de 1 chaque itration de la boucle et ce, partir de 0 (la premire cl est 0, puis 1, 2, 3,...). Exemple : crer un tableau mots_choisis contenant les #ID_MOT de tous les mots-cls lis un article.
#SET{mots_choisis, #ARRAY} <BOUCLE_themes(MOTS){id_article}> #SET{mots_choisis, #GET{mots_choisis}|push{#ID_MOT}} </BOUCLE_themes>

Si les mots lis cet article portent les numros 4, 9 et 18, [(#GET{mots_choisis}|foreach)] retourne :

0=>4 1=>9 2=>18

Notez bien que [(#GET{mots_choisis}|table_valeur{2})] retourne 18, la valeur associe la cl 2, donc la troisime valeur du tableau. - |array_merge ajoute une paire cl/valeur la fin du tableau. Cela permet donc de forcer le "nom" des cls. Attention (1) : si une cl apparat plusieurs fois, seule la dernire valeur pour cette cl sera retenue. Attention (2) : la cl que lon veut forcer ne peut pas tre de type numrique. En effet, la documentation de array_merge prcise : Si vous passez un seul tableau cette fonction et quil a des index numriques, les cls seront rindexes normalement. Il existe deux solutions cette limitation : - prfixer cette cl avec une valeur alphabtique :

Manuel de rfrence des boucles et balises

80/186

#SET{mots_choisis, #ARRAY} <BOUCLE_themes(MOTS) {id_article}> [(#SET{mots_choisis,#GET{mots_choisis}|array_merge{#ARRAY{mot#ID_MOT,#TITRE }}})] </BOUCLE_themes> [(#GET{mots_choisis}|foreach)]

retourne :

mot4=>Pomme mot9=>Banane mot18=>Carotte

- inverser cl et valeur, condition que valeur ne soit pas elle aussi numrique :
#SET{mots_choisis, #ARRAY} <BOUCLE_themes(MOTS) {id_article}> [(#SET{mots_choisis,#GET{mots_choisis}|array_merge{#ARRAY{#TITRE,#ID_MOT}}} )] </BOUCLE_themes> [(#GET{mots_choisis}|foreach)]

retourne :

Pomme=>4 Banane=>9 Carotte=>18

Dans ce cas, on pourra appliquer la fonction PHP |array_flip comme filtre sur le tableau final (aprs la boucle) :
[(#SET{mots_choisis, #GET{mots_choisis}|array_flip})] [(#GET{mots_choisis}|foreach)]

retourne alors :

4=>Pomme 9=>Banane 18=>Carotte

Utiliser le tableau dans une boucle avec loprateur IN Reprenons le tableau mots_choisis contenant des #ID_MOT, on peut slectionner ensuite les articles lis aux mmes mots-cls que notre article initial grce au critre IN.
#SET{mots_choisis, #ARRAY} <BOUCLE_themes(MOTS){id_article}> #SET{mots_choisis, #GET{mots_choisis}|push{#ID_MOT}} </BOUCLE_themes> <BOUCLE_memes_themes(ARTICLES) {id_mot IN #GET{mots_choisis}}> #TITRE <br /> </BOUCLE_memes_themes>

Cette utilisation connat de multiples usages, notamment lorsque lon veut slectionner des objets laide de plusieurs critres qui ne peuvent faire partie de la mme boucle, puis les mlanger entre eux avec un critre de tri unique. Manuel de rfrence des boucles et balises 81/186

Exemples dutilisation des tableaux - Affichage conditionnel en fonction de la page (valeur de #ENV{page}) :
[(#ENV{page}|in_array{#ARRAY{0,article,1,rubrique,2,site}}|oui) Affichage conditionnel: la page est celle d'un article, d'une rubrique ou d'un site. ]

- Affichage conditionnel en fonction dune variable passe dans lURL [3] :


<BOUCLE_tous_les_mots(MOTS){par titre}{", "}> <a href="[(#SELF|parametre_url{lolo,#ID_MOT})]">#TITRE</a> </BOUCLE_tous_les_mots> #SET{les_mots, #ARRAY} <BOUCLE_certains_mots(MOTS){id_article}> #SET{les_mots, #GET{les_mots}|push{#ID_MOT}} </BOUCLE_certains_mots> [<br />Ceci s'affichera si la valeur de la variable 'lolo' passe dans l'url est prsente dans un tableau 'les_mots' dclar et rempli prcdemment.(#ENV{lolo}|in_any{#GET{les_mots}}|oui)]

- Slectionner les articles dune rubrique et ceux associs par ailleurs un mot-cl puis lister tous ces articles par date.
#SET{les_articles,#ARRAY} <BOUCLE_articles_rubrique(ARTICLES){id_rubrique}> #SET{les_articles,#GET{les_articles}|push{#ID_ARTICLE}} </BOUCLE_articles_rubrique> <BOUCLE_articles_mot(ARTICLES){id_mot}> #SET{les_articles,#GET{les_articles}|push{#ID_ARTICLE}} </BOUCLE_articles_mot> <BOUCLE_affiche(ARTICLES){id_article IN #GET{les_articles}}{par date}> <br />#TITRE </BOUCLE_affiche>

Notes [1] Voir #SET et #GET pour plus de dtails. [2] |find correspond la fonction PHP in_array, la diffrence que ce filtre ne produit pas le message derreur "Warning : in_array() [function.in-array] : Wrong datatype for second argument." si la variable nest finalement pas un tableau. En effet, lorsquune variable est gnre dynamiquement, on ne sait pas toujours si elle existera et sil sagira bien dun tableau. [3] Voir #SELF et |parametre_url.

Manuel de rfrence des boucles et balises

82/186

#AUTORISER
Janvier 2009 maj : Mai 2009

Cette balise permet, ct squelette, deffectuer les mmes contrles que ceux quon peut raliser en PHP avec la fonction autoriser() Elle renvoie un espace si lautorisation est donne, et une chane vide dans le cas contraire. On met autant darguments (et les mmes) quon en mettrait dans la fonction autoriser(). Par exemple, pour savoir si le visiteur courant peut accder aux statistiques de larticle :
[(#AUTORISER{voirstats,article,#ID_ARTICLE}) <a href='ecrire/?exec=....'>voir les stats</a> ]

Comme pour la fonction autoriser(), on peut passer un #ID_AUTEUR en argument pour demander si lauteur en question est autoris .... . Par exemple pour signaler dune toile les administrateurs et rdacteurs dans une liste dauteurs :
<BOUCLE_a(AUTEURS){tous}> #NOM [(#AUTORISER{ecrire,'','',#ID_AUTEUR}) *] </BOUCLE_a>

Un autre exemple, ci dessous, si le visiteur a des droits de modifications sur larticle, afficher un formulaire pour lditer, qui, une fois valid, retourne sur la page de larticle en question :
[(#AUTORISER{modifier, article,#ID_ARTICLE}) #FORMULAIRE_EDITER_ARTICLE{#ID_ARTICLE, #ID_RUBRIQUE, #URL_ARTICLE} ]

Rappel : les arguments de autoriser sont, dans lordre, (faire, quoi, id, qui, options). Pour plus de dtails nous vous invitons consulter la documentation des fonctions de inc/autoriser.php.

#BIO
Octobre 2009

Utilise dans une boucle (AUTEURS), la balise #BIO affiche la biographie de lauteur.

Manuel de rfrence des boucles et balises

83/186

#BOUTON_ACTION (depuis SPIP 2.1)


Avril 2010

La balise #BOUTON_ACTION{libell, url, class, confirm_message} produit le source html complet dun formulaire (methode POST) comportant uniquement un bouton de type submit. Lintrt de cette balise est quelle permet de transmettre des arguments une url grce un pseudo-lien non suivable par un robot (les robots ne cliquent pas sur un bouton submit). Cest particulirement utile dans le cadre dune url qui renvoit vers un script dintervention sur les donnes en base. Il faut alors protger le lien vers cette url de tout risque dtre suivi par un robot. #BOUTON_ACTION est l pour a. La balise est utiliser ainsi :
#BOUTON_ACTION{libell, url, class ,message de confirmation}

Le 3e argument, optionnel, est un nom de classe css ; lui donner la valeur ajax permet au bouton de se comporter comme un lien ajax ; Le 4e argument, optionnel, permet de prciser le message de confirmation affich lors de la validation du bouton. - Attention :

si vous dsirez prciser un message de confirmation, vous devez aussi renseigner le 3e argument : #BOUTON_ACTION{libell, url ,message de confirmation} ne fonctionnera pas comme vous lentendez ( message de confirmation sera pass comme nom de classe css). Pour prciser un message de confirmation sans prciser de classe css, crire :
#BOUTON_ACTION{libell, url , '', message de confirmation}

Si vous utilisez des caractres accentus dans votre message de confirmation, vous devez les traduire en entits numriques ( => &#233;).

Exemple :
#BOUTON_ACTION{valider, #URL_PAGE{mon_script}|parametre_url{var1, val1}|parametre_url{var2, val2}|parametre_url{var3, val3}, ajax, &#234;tesvous s&#251;r ?}

produira le source html suivant :


<form class='bouton_action_post ajax' method='post' action='./?page=mon_script&amp;var1=val1&amp;var2=val2&amp;var3=val3'> <div> <input name="page" value="mon_script" type="hidden" /> <input name="var1" value="val1" type="hidden" /> <input name="var2" value="val2" type="hidden" /> <input name="var3" value="val3" type="hidden" /> <button type='submit' class='submit' onclick='return confirm("&#234;tesvous s&#251;r ?");'>valider</button>

Manuel de rfrence des boucles et balises

84/186

</div> </form>

#CACHE
Mars 2010

La balise #CACHE{temps en secondes} permet de dterminer le dlai au bout duquel le squelette est nouveau calcul (var_mode=calcul dans lURL actualise le cache de la page). Le temps est exprim en secondes. Il peut tre indiqu sous forme de calcul. Cette balise est gnralement place au tout dbut des squelettes. En son absence, par dfaut, la dure est de 24h (dfini par la constante _DUREE_CACHE_DEFAUT). Par exemple : #CACHE{24*3600*30} signifie que tous les mois (30 jours) votre squelette sera calcul nouveau.

#CHAMP_SQL
Mars 2009

La balise #CHAMP_SQL peut tre utilise dans toutes les boucles et permet dextraire un champ dune table SQL. #CHAMP_SQL se rvle trs utile quand une balise du mme nom que le champ existe dj (avec le multibases par exemple). Prenons lexemple de #POINTS qui est inscrit dans le core de SPIP ; Pour extraire un champ #POINTS, nous devons obligatoirement utiliser #CHAMP_SQL{points} sinon le compilateur de SPIP croira que nous faisons appel #POINTS qui ne peut se trouver que dans une boucle avec le critre {recherche}. Remarque : La balise #CHAMP_SQL ne peut tre dfinie dynamiquement, cest obligatoirement une constante qui doit servir de paramtre. #CHAMP_SQL{points} fonctionne mais pas #CHAMP_SQL{#GET{champ}}.

#CHAPO
Dcembre 2008

- #CHAPO affiche le texte dintroduction (chapeau).

Manuel de rfrence des boucles et balises

85/186

#CHARSET
Mars 2010 #CHARSET affiche le jeu de caractres utilis par le site. Sa valeur par dfaut utf-8 (jeu de caractres dit universel ).

Ce charset est configurable depuis la page de configuration du site : ecrire/?exec=config_lang ( Jeu de caractres du site ).

#CHEMIN
Octobre 2009 maj : Dcembre 2009

La balise #CHEMIN{fichier.ext} retourne le chemin complet vers fichier.ext, quil se trouve dans le dossier squelettes/, dans le dossier dun plugin, la racine, dans squelettes-dist/ etc.
#CHEMIN parcourt lensemble du spip_path dans un ordre prcis (voir ci-aprs) jusqu trouver le fichier recherch :

dabord : o ./squelettes/ puis, dans lordre alphabtique du nom de leur dossier et indpendamment de leur place dans auto/ ou non, les plugins ncessitant dautres plugins : o ./plugins/auto/plugin_A_ncessitant_plugin_X/ o ./plugins/plugin_B_ncessitant_plugin_Y/ o ./plugins/plugin_C_ncessitant_plugin_X/ puis, sans ordre particulier, les autres plugins : o ./plugins/plugin_Y/ o ./plugins/plugin_G o ./plugins/plugin_X/ o ./plugins/plugin_E puis la racine du site : o ./ enfin, et dans cet ordre, les 3 rpertoires : o ./squelettes-dist/ o ./prive/ o ./ecrire/

Exemples :
<link rel="stylesheet" href="#CHEMIN{le_style.css}" type="text/css" /> <img src="#CHEMIN{images/mon_logo.png}" alt="" />

Manuel de rfrence des boucles et balises

86/186

#COMPTEUR_BOUCLE
Septembre 2009 maj : mars 2010 #COMPTEUR_BOUCLE retourne le numro de litration actuelle de la boucle. On peut par exemple lutiliser pour numroter des rsultats : <BOUCLE_art(ARTICLES) {par date} {inverse} {0,10}> #COMPTEUR_BOUCLE - #TITRE<br> </BOUCLE_art>

#CONFIG
Mai 2010

La balise technique #CONFIG permet dafficher la valeur dun rglage stock dans la table spip_meta. retourne le contenu brut dune valeur contenu dans la table spip_meta Exemple : Connatre si les visiteurs sont accepts sur le site : [Visiteurs: (#CONFIG{accepter_visiteurs})] affichera "oui" ou "non".
#CONFIG

Il est possible de fournir une valeur par dfaut si le contenu de la meta est vide.
#CONFIG{nom_meta,valeur_defaut}

Exemple : Connatre ladresse du site


[Adresse du site : (#CONFIG{adresse_site, pas d'url pour le site})]

Attention : la balise retournant la valeur brute depuis la table spip_meta, les valeurs stockes sous forme de tableau srializ sont retournes telles quelles.

#DATE
Novembre 2009 maj : aot 2010 #DATE est la date de mise en ligne. (Modifiable aprs la mise en ligne de larticle, de la brve, etc. La date dune rubrique est celle de son lment le plus rcent.)

Si une date est rentre de faon incomplte, vous devez utiliser un "*" aprs la balise #DATE pour un affichage comprhensible dans la partie public. Par exemple, avec [(#DATE*|affdate)] : - votre date a t rentre sous la forme "nc-juillet-2009", vous aurez laffichage "juillet 2009" - votre date a t rentre sous la forme "nc-non connu-2009", vous aurez laffichage "2009"

Manuel de rfrence des boucles et balises

87/186

#DATE_MODIF, #DATE_REDAC
Dcembre 2008

- Les balises de dates : #DATE, #DATE_REDAC, #DATE_MODIF sont explicites dans la documentation sur La gestion des dates .

#DATE_NOUVEAUTES
Avril 2010

La balise #DATE_NOUVEAUTES affiche la date du dernier envoi du mail prsentant les nouveauts si cette fonction a t slectionne dans la boite Annonce des nouveauts de la page configuration du site ecrire/?exec=config_contenu (si cette fonction est dsactive la balise retourne 1970-01-01 01:00:00).

#DESCRIPTIF
Dcembre 2008

- #DESCRIPTIF affiche le descriptif.

#DESCRIPTIF_SITE_SPIP
Septembre 2009 maj : mars 2010 #DESCRIPTIF_SITE_SPIP affiche, comme son nom lindique, le descriptif du site, que lon renseigne dans la page de configuration gnrale du site.

#DISTANT
Mars 2010

La balise #DISTANT affiche oui ou non selon que le document est distant (rfrenc par une url) ou pas. Exemple (afficher une imagette pour indiquer que le document est hberg sur un site externe) :
[(#DISTANT|=={oui}|oui) <img src="ext.png" alt="">]

Manuel de rfrence des boucles et balises

88/186

#DOSSIER_SQUELETTE
mars 2010

dprcie par #CHEMIN qui la remplace et l'amliore.

#DOUBLONS
Novembre 2009 maj : juillet 2010

ou #DOUBLONS{mots,famille} donne letat des doublons (MOTS) cet endroit sous forme de tableau did_mot array(1,2,3,...)
#DOUBLONS{mots} #DOUBLONS

tout seul donne la liste brute de tous les doublons donne la chaine brute ",1,2,3,..." (changera si la gestion des doublons

#DOUBLONS*{mots}

evolue) pour des doublons nomms (exemple :


<BOUCLE_b(ARTICLES){id_article>100}{doublons A}>) on utilisera : #DOUBLONS{articles, A} pour avoir le tableau des id_articles.

pour passer le ou les tableaux de doublons un INCLURE, on notera :


#INCLURE{fond=noisette, env, doublons=#DOUBLONS{articles, A}} pour un tableau nomm {doublons A} dune BOUCLE(ARTICLES) et #INCLURE{fond=noisette, env, doublons} pour tous les tableaux de doublons dclars

dans le squelette appelant (avant lappel de lINCLURE). pour rcuprer un tableau de doublons depuis un INCLURE, il conviendra de ne faire retourner par cet INCLURE que #DOUBLONS*{articles, B} et, dans le squelette appelant, dutiliser #SET{ret, #INCLURE{fond=noisette, env, doublons}|explode{','}} : le #GET{ret} rsultant pouvant alors tre utilis dans un critre de boucle ({id_article IN #GET{ret}}).

#EDIT
avril 2010 #EDIT{xxx}

dans la class dun lment entourant la balise #XXX permet de la rendre ditable laide du plugin crayons (voir la documentation sur spip-contrib)

Manuel de rfrence des boucles et balises

89/186

#EDITABLE
5 juillet 2010

Utilise lintrieur dun squelette de formulaire CVT, la balise #EDITABLE indique si linternaute doit saisir les donnes dun formulaire. En la testant, le squelette peut masquer la partie saisie du formulaire lorsquil est appel aprs la validation. Lexemple de Formulaires CVT par lexemple est :
[<p class='formulaire_ok'>(#ENV*{message_ok})</p>] [<p class='formulaire_erreur'>(#ENV*{message_erreur})</p>] [(#EDITABLE|oui) <form action='#ENV{action}' method='post'> #ACTION_FORMULAIRE{#ENV{action}} <label>Votre email</label> [<span class='erreur'>(#ENV**{erreurs}|table_valeur{email})</span>] <input type='text' name='email' value='#ENV{email}' /> <br /> <label>Votre message</label> [<span class='erreur'>(#ENV**{erreurs}|table_valeur{message})</span>] <textarea name='message'>#ENV{message}</textarea> <input type='submit' name='ok' value='ok' /> </form> ]

Si on vient daccepter les donnes, on en informe linternaute. Si il y a une erreur, on laffiche si on en en phase de saisie, on affiche le formulaire html

#EMAIL
mars 2010

La balise #EMAIL affiche ladresse e-mail dun auteur. Elle est utilisable dans une boucle AUTEURS, une boucle FORUMS ou une boucle SIGNATURES.

#EMAIL_WEBMASTER
Mars 2010

La balise #EMAIL_WEBMASTER affiche ladresse mail du webmestre telle quelle a t renseigne dans la page de configuration du site.

Manuel de rfrence des boucles et balises

90/186

#EMBED_DOCUMENT
Mars 2010

Cette balise est dprcie, au profit de #MODELE

#ENV
Fvrier 2009 maj : mai 2010

Balise permettant dobtenir la valeur dune variable fournie par un #INCLURE ou depuis une url
[(#ENV{variable, valeur_par_defaut})] #ENV{variable}

permet daccder aux variables denvironnement dun squelette (son

contexte) [1]. Le squelette peut recevoir cette variable soit de lURL (la requte HTTP), soit du fichier qui linclut, soit encore dun retour de formulaire. Exemple de variable passe dans lurl : spip.php?rubrique24&id_mot=5 Dans rubrique.html, #ENV{id_mot} vaut 5. Exemple de variable passe dans un INCLURE :<INCLURE{fond=mon_squelette}
{id_article=136}>

Dans mon_squelette.html, #ENV{id_article} vaut 136. Valeur par dfaut


[(#ENV{variable, valeur_par_defaut})] : le paramtre optionnel valeur_par_defaut contient la valeur qui doit tre retourne si la variable nexiste pas (quivalent [(#ENV{variable}|sinon{valeur_par_defaut})]).

Utile quand un squelette est inclu partir de diffrents squelettes, et que lon en attend un comportement diffrent selon le contexte. Court-circuiter les traitements de scurit Par dfaut, SPIP applique les fonctions interdire_scripts et entites_html la balise #ENV. Comme pour toute balise, on peut supprimer les traitements automatiques de SPIP avec #ENV* et #ENV** (voir, pour lusage de * et **, larticle #BALISE* et #BALISE**). retourne la variable sans appliquer le filtre entites_html, donc sans transformer tous les caractres spciaux en entits HTML. #ENV** retourne la variable sans appliquer la fonction interdire_scripts. Elle renvoie donc le PHP excut. [2] Ceci peut poser un problme de scurit si cette variable reoit une injection de code. Voil pourquoi interdire_scripts est l par dfaut pour invalider les < et autres <script language=php> contenus dans la variable.
#ENV*

Manuel de rfrence des boucles et balises

91/186

Nanmoins #ENV** trouve une application lorsque lon construit un formulaire. Lutilisation de la double toile est ainsi ncessaire dans laffichage des formulaires CVT. Par exemple, pour rcuprer le tableau des erreurs dans le squelette du formulaire :
#ENV**{erreurs}|table_valeur{clef}...

Notes [1] Par scurit, #ENV ne rcupre (ni naffiche) jamais les variables nommes PHPSESSID ou dont le nom commence par var_ (comme par exemple var_mode et var_profile). [2] imaginons un formulaire tout simple :
<form method="get"> <input type="text" name="test" value="#ENV{test}"> <input type="submit"> </form> #ENV{test}<br /> #ENV*{test}<br /> #ENV**{test}<br />

dans le formulaire affich, entrons : <?php echo date('Y-m-d'); ?> dans le champ test , puis validons. - #ENV{test} renverra (source html) : &lt;?php echo date('Y-m-d'); ?&gt; - #ENV*{test} renverra (source html) : &lt;?php echo date('Y-m-d'); ?> - #ENV**{test} renverra (source html) : 2009-02-12 cest dire le php excut.

#EVAL
Mars 2010

La balise technique #EVAL{} retourne lvaluation de lexpression PHP passe en argument #EVAL{2*7} affiche donc 14, #EVAL{_DIR_IMG_PACK} affiche le chemin vers le rpertoire ecrire/img_pack/, #EVAL{phpversion()} affiche la version php du serveur #EVAL{$_SERVER['REQUEST_URI']} ... Cette balise interprtant du code PHP, elle est utiliser avec prcaution.

#EXTENSION
Mars 2010 #EXTENSION

affiche lextension de format du fichier, par exemple : pdf, jpeg, mov, ra...

Manuel de rfrence des boucles et balises

92/186

#FICHIER
Mars 2010

La balise #FICHIER affiche lURL relative du document [1] ; par exemple : IMG/pdf/mon_document.pdf. Pour extraire le nom seul du fichier, on pourra utiliser le filtre : |basename : [(#FICHIER|basename)] (affichera mon_document.pdf). Une utilisation intressante de cette balise est combine avec le filtre |image_reduire, dans le cadre dun portfolio pour afficher une rduction de limage plutt que de son logo ; par exemple en utilisant
[<a href="#URL_DOCUMENT">(#FICHIER|image_reduire{500}) </a>]

Notes
[1] dans le cas dun document distant, #FICHIER affiche lURL complte vers le document (http://autre_site.com/rep/document.ext)

#FILTRE
juillet 2010 #FILTRE{f}

applique le filtre f lensemble du squelette une fois celui-ci calcul.

Cette balise prend en paramtre un filtre ou une combinaison de filtres. Ex : #FILTRE{supprimer_tags|filtrer_entites|trim} Place la fin dun squelette elle applique son paramtre en tant que filtre lensemble du squelette gnr, une fois celui-ci calcul. Prcision : Ce filtrage sapplique aux #INCLURE du squelette recevant cette balise , mais ne sapplique pas aux <INCLURE> contenu dans ce squelette. Exemple : dans le plugin notification, un squelette inscription.html gnre le contenu dun mail. Pour rendre ce contenu adapt un mail, le rsultat du squelette est trait par une srie de filtres destins enlever les tags HTML, les espaces redondants et les entits HTML : #FILTRE{supprimer_tags|filtrer_entites|trim} (voir : http://zone.spip.org/trac/spipzone/browser/_plugins_/notifications/notifications/inscription.html?rev=38419)

Manuel de rfrence des boucles et balises

93/186

#FOREACH
Dcembre 2009 maj : mars 2010

La balise #FOREACH permet de boucler sur un contenu quivalent un tableau calcul dans le squelette en appliquant pour chacun de ses lments un modle SPIP.
#FOREACH{balise, modele}

Exemples - Dans un squelette quelconque, lutilisation de #FOREACH{env} affichera toutes les variables de la balise #ENV de la manire suivante :

page=> test_boucle date=> 2009-12-22 22:44:27 date_default=> 1 date_redac=> 2009-12-22 22:44:27 date_redac_default=> 1

Autrement dit, pour chaque lment du tableau associatif php que reprsente la balise #ENV, #FOREACH appliquera le modle foreach.html (cf. plus bas). - On peut vouloir afficher le contenu dune autre balise. #CONFIG par exemple. Pour cela, on passera le nom de la balise comme premier paramtre :
#FOREACH{config}

affichera donc peu prs :

charset_sql_base=> utf8 charset_collation_sql_base=> utf8_general_ci charset_sql_connexion=> utf8 version_installee=> 14558 nouvelle_install=> 1 plugin=> a:3:{s:3:"CFG";a:4:{s:3:"nom";s:90:"<multi> [fr]cfg: moteur
de configuration [de]cfg: Konfigurationsmotor </multi>";s:4:"etat";s:6:"stable";s:3:"dir";s:8:"auto/cfg";s:7:"versi on";s:6:"1.14.1";}}

derniere_modif_rubrique=> 1260746188 ...=> ...

Et pour toute balise SPIP reprsentant un tableau php on aura un rsultat similaire (voir #ARRAY). Fabriquer un modle ddi Le modle foreach.html est celui qui est appliqu par dfaut. On le trouve dans squelettes-dist/modeles/. Il est possible de le modifier, mais on peut aussi fabriquer un modle ddi une balise et le placer dans son propre dossier squelettes/modeles/. Le modle foreach_balise.html correspond #FOREACH{balise}.

Manuel de rfrence des boucles et balises

94/186

On peut aussi souhaiter crer des modles gnraux et les utiliser pour telle ou telle balise. Par exemple, pour des listes non numres un modle nomm squelettes/modeles/foreach_ul_li.html, qui contiendrait : <li><a href="#ENV{valeur}">#ENV{cle}</a></li> serait appel par [<ul>(#FOREACH{ENV, foreach_ul_li})</ul>] et afficherait (source html) :
<ul> <li><a <li><a <li><a <li><a <li><a </ul> href="test_boucle">page</a></li> href="2009-12-22 22:54:40">date</a></li> href="1">date_default</a></li> href="2009-12-22 22:54:40">date_redac</a></li> href="1">date_redac_default</a></li>

Plus de valeurs Enfin, dans les cas plus complexes, on peut passer plus de valeurs au modle en respectant la structure de tableau suivante pour la balise que vous aurez conue :
array ( 'cle' => array ( 'val1' => 'valeur1' 'val2' => 'valeur2' 'val3' => 'valeur3' 'val4' => 'valeur4' ) 'cle2' => array ( 'val1' => 'valeur1bis' 'val2' => 'valeur2bis' 'val3' => 'valeur3bis' 'val4' => 'valeur4bis' ) )

et en fournissant un modle adapt :


#ENV{val1}, #ENV{val2}, #ENV{val3} et #ENV{val4}

#FORMULAIRE_ADMIN
13 aot 2010

La balise #FORMULAIRE_ADMIN est une balise optionnelle qui permet de placer les boutons dadministration ( recalculer cette page , etc.) dans ses squelettes. Lorsquun administrateur parcours le site public, si cette balise est prsente, elle sera remplace par les boutons dadministration, sinon, les boutons seront placs la fin de la page.

Manuel de rfrence des boucles et balises

95/186

#FORMULAIRE_ECRIRE_AUTEUR
13 aot 2010

La balise #FORMULAIRE_ECRIRE_AUTEUR fabrique et affiche un formulaire permettant dcrire lauteur. Il faut que le serveur hbergeant le site accepte denvoyer des mails. Ce systme permet de ne pas divulguer ladresse email de lauteur. NB : pour que le formulaire soit affich il faut que lauteur ait renseign le champ email de sa fiche auteur.

#FORMULAIRE_FORUM
Janvier 2009

- #FORMULAIRE_FORUM fabrique et affiche le formulaire permettant de poster un message rpondant cet article. Pour en savoir plus, voir aussi Les formulaires .

#FORMULAIRE_INSCRIPTION
7 septembre 2010

La balise #FORMULAIRE_INSCRIPTION affiche le formulaire permettant linscription de nouveaux rdacteurs. Celui-ci ne saffiche que si vous avez autoris linscription automatique depuis le site public (sinon, cette balise naffiche rigoureusement rien). Linscription ncessite lenvoi des informations de connexion (login et mot de passe) par email ; ce formulaire ne fonctionne donc que si votre hbergeur autorise lenvoi de mails par PHP. est lquivalente de la prcdente, pour linscription des visiteurs, appels crire dans les forums (rservs aux visiteurs enregistrs), option qui se dtermine dans la partie prive configuration/interactivit/Mode de fonctionnement par dfaut des forums publics. Le paramtre 6forum correspond lintitul du statut dauteur dsir lors de linscription.
[(#FORMULAIRE_INSCRIPTION{6forum})]

Aprs la validation, un message avertit le visiteur : "Votre nouvel identifiant vient de vous tre envoy par email."

#FORMULAIRE_SIGNATURE
Janvier 2009

- #FORMULAIRE_SIGNATURE fabrique et affiche le formulaire permettant de signer la ptition associe cet article.

Manuel de rfrence des boucles et balises

96/186

#GET
Dcembre 2009 maj : mars 2010

Voir #SET et #GET.

#HAUTEUR
Mars 2010 #HAUTEUR

retourne la hauteur dun document de type image (png, gif ou jpg) exprime en pixels (retourne 0 pour les autres types de document).

#HTTP_HEADER
24 mars 2010

La balise #HTTP_HEADER{argument} permet de modifier lentte HTTP de la page retourne par SPIP. Remarques - #HTTP_HEADER ne peut tre prcde daucun caractre ni despace. - #HTTP_HEADER ne doit pas tre prcd de code html. Exemple :

<BOUCLE_truc(ARTICLES)> <!-- debut de page --> #HTTP_HEADER{...} ...

pas bon !

<BOUCLE_truc(ARTICLES)> #HTTP_HEADER{...} <!-- debut de page --> ...

bon !

- Lutilisation de cette balise supprime les boutons dadministration. - Cette balise ne peut pas tre utilise dans des squelettes inclus via la syntaxe <INCLURE>. Exemples dutilisation - #HTTP_HEADER{Content-Type: text/css}, permet de prciser que le squelette (dont lextension reste .html) est en fait une feuille de style. Voir pour plus dinformations larticle sur SPIP-Contrib : http://www.spip-contrib.net/Feuille-de-style-dynamique-des. - #HTTP_HEADER{Content-Type: text/plain; charset=#CHARSET} pour la version texte dun article. Manuel de rfrence des boucles et balises 97/186

- #HTTP_HEADER{Content-Type: text/csv; charset=#CHARSET}


#HTTP_HEADER{Content-Disposition: attachment; filename=rapport.csv}

pour un

squelette qui produit un fichier CSV.

#ID_ARTICLE
Dcembre 2008

- #ID_ARTICLE affiche lidentifiant unique de larticle. Utile pour fabriquer des liens hypertextes non prvus (par exemple vers une page Afficher au format impression ).

#ID_DOCUMENT
Janvier 2010

- #ID_DOCUMENT affiche lidentifiant unique du document.

#ID_RUBRIQUE
Dcembre 2008

- #ID_RUBRIQUE affiche lidentifiant de la rubrique dont dpend larticle.

#ID_SECTEUR
Dcembre 2008

- #ID_SECTEUR affiche lidentifiant du secteur dont dpend larticle (le secteur tant la rubrique parente situe la racine du site).

Manuel de rfrence des boucles et balises

98/186

#INSERT_HEAD
Juin2010 #INSERT_HEAD

insre automatiquement les scripts et feuilles de style fournis par SPIP et ses

plugins. La balise #INSERT_HEAD doit se situer entre les balises <head> et </head> de vos squelettes. Elle permet SPIP, ses extensions, ainsi quaux plugins ventuels, dajouter du contenu entre ces deux balises html. Une fonction de compression existe. Cette fonctionnalit optimise la consommation de la bande passante pour lensemble des lments transmis via cette balise en enlevant tous les espaces et commentaires "superflues" des fichiers .js et .css de tous les squelettes. On peut activer ou dsactiver cette fonction dans le panneau de configuration de la partie prive. Depuis SPIP 2.1, il est fortement recommand dutiliser systmatiquement cette balise dans ses squelettes. Cette recommandation est due au passage en extension de certaines fonctionnalits du core qui se comportent alors comme des plugins.

#INSERT_HEAD_CSS
Juillet 2010 #INSERT_HEAD_CSS

indique aux plugins o insrer leurs feuilles de style.

Les squelettes peuvent surcharger ces feuilles de style en fonction de leur ordre dappel dans les squelettes. A noter que, pour conserver la compatibilit avec les squelettes existants, si la balise #INSERT_HEAD_CSS nest pas prsente dans le squelette, #INSERT_HEAD insrera son contenu (il est noter alors que lordre dinsertion ne sera pas optimale)

Manuel de rfrence des boucles et balises

99/186

#INTRODUCTION
Janvier 2009 maj : Septembre 2009

- #INTRODUCTION affiche le descriptif de larticle, sinon affiche les 600 premiers caractres de larticle (chapo puis texte). Pour prciser spcifiquement lintroduction, il est possible dencadrer la portion de texte voulue de son texte (en mode dition) par les tags <intro> et </intro> :
La foule des bourgeois et des bourgeoises s'acheminait donc de toutes parts ds le matin, maisons et boutiques fermes, vers l'un des trois endroits dsigns. <intro>Chacun avait pris parti, qui pour le feu de joie, qui pour le mai, qui pour le mystre.</intro> Il faut dire, l'loge de l'antique bon sens des badauds de Paris, que la plus grande partie de cette foule se dirigeait vers le feu de joie, lequel tait tout fait de saison, ou vers le mystre, qui devait tre reprsent dans la grand'salle du Palais bien couverte et bien close, et que les curieux s'accordaient laisser le pauvre mai mal fleuri grelotter tout seul sous le ciel de janvier dans le cimetire de la chapelle de Braque. _ {(v.hugo)}

affichera Chacun avait pris parti, qui pour le feu de joie, qui pour le mai, qui pour le mystre.
#INTRODUCTION

Lorsquelle coupe un texte de plus de 600 caractres, la balise #INTRODUCTION ajoute lextrait des points de suite ((...)) on peut vouloir modifier ces points de suite et pour cela, il faut ajouter dans mes_options.php :
define('_INTRODUCTION_SUITE', 'ce que je veux ici');

#LANG
Dcembre 2008

- #LANG affiche la langue de cet article.

#LANG_DIR, #LANG_LEFT, #LANG_RIGHT


avril 2010 #LANG_DIR, #LANG_LEFT, #LANG_RIGHT

: ces balises dfinissent le sens dcriture de la langue du contexte actuel (par exemple, de larticle quon est en train dafficher). Voir larticle Raliser un site multilingue pour plus dinformation.

Manuel de rfrence des boucles et balises

100/186

#LARGEUR
Mars 2010 #LARGEUR

retourne la largeur dun document de type image (png, gif ou jpg) exprime en pixels (retourne 0 pour les autres types de document).

#LESAUTEURS
Janvier 2009

- #LESAUTEURS affiche les auteurs de cet article, avec lien vers leur propre page publique (afin de pouvoir directement leur crire ou de consulter la liste des articles quils ont publi). Cela vite de crer une boucle AUTEURS pour obtenir le mme rsultat.

#LOGO_ARTICLE
Aot 2010

Cette balise affiche le logo de larticle, ventuellement avec la gestion du survol. Deux balises permettent de rcuprer une seule des deux variantes du logos : #LOGO_ARTICLE_NORMAL affiche le logo sans survol ; #LOGO_ARTICLE_SURVOL affiche le logo de survol. - Dans un squelette, le logo de larticle sinstalle de la manire suivante : [(#LOGO_ARTICLE|alignement|adresse)] Lalignement ne peut tre que left, right, center, top ou bottom. Cet alignement sera traduit dans le code html par class=" ... " (penser dfinir la classe correspondante dans ses feuilles de style). Ladresse est lURL de destination du lien de ce logo (par exemple #URL_ARTICLE). Si lon nindique pas dadresse, limage nest pas cliquable. Exemple :
[(#LOGO_ARTICLE|right|#URL_ARTICLE)]

affiche le logo droite avec une lien vers la page de larticle. - #LOGO_ARTICLE_RUBRIQUE affiche le logo de larticle, ventuellement remplac par le logo de la rubrique sil nexiste pas de logo spcifique larticle. - Si lon veut rcuprer directement le nom du fichier du logo (alors que les balises prcdentes fabriquent le code HTML complet pour insrer limage dans la page), par exemple pour afficher une image en fond de tableau, on utilisera le filtre |fichier comme suit :
[(#LOGO_ARTICLE|fichier)]

Manuel de rfrence des boucles et balises

101/186

- Les filtres dimage (recadrage, rduction, masque...) peuvent sappliquer sur le logo de larticle. Exemple :
[(#LOGO_ARTICLE||image_reduire{200,200})]

affiche le logo de larticle, dont la plus grande des 2 tailles (si elle est suprieure 200px) est rduite 200px et lautre en proportion (voir le filtre image_reduire). - Il est possible dassocier un attribut alt au logo de larticle en utilisant le filtre inserer_attribut :
[(#LOGO_ARTICLE|#URL_ARTICLE||inserer_attribut{alt,#TITRE})]

utilise le titre de larticle comme attribut alt du logo. - Depuis SPIP 2.1 les filtres de logos ont la mme syntaxe que tous les autres. Un seul pipe suffit :
[(#LOGO_XXX|filtre)]

Mais : - #LOGO_XXX** renvoie le fichier - #LOGO_XXX{top/left/right/center/bottom} gnre un alignement - #LOGO_XXX{url} gnre un logo qui pointe vers lurl.

#LOGO_ARTICLE_RUBRIQUE
juillet 2010

Cette balise affiche le logo de larticle, ventuellement remplac par le logo de la rubrique sil nexiste pas de logo spcifique larticle. - Dans un squelette, ce logo sinstalle de la manire suivante : [(#LOGO_ARTICLE_RUBRIQUE|alignement|adresse)] Lalignement ne peut tre que left, right, center, top ou bottom. Cet alignement sera traduit dans le code html par class=" ... " (penser dfinir la classe correspondante dans ses feuilles de style). Ladresse est lURL de destination du lien de ce logo (par exemple #URL_ARTICLE). Si lon nindique pas dadresse, limage nest pas cliquable. Exemple :
[(#LOGO_ARTICLE_RUBRIQUE|center|#URL_ARTICLE)]

affiche le logo au centre avec une lien vers la page de larticle. - Les filtres dimage (recadrage, rduction, masque...) peuvent sappliquer sur ce logo. Exemple :
[(#LOGO_ARTICLE_RUBRIQUE||image_reduire{200,200})]

Manuel de rfrence des boucles et balises

102/186

affiche le logo de larticle ou dfaut celui de sa rubrique, dont la plus grande des 2 tailles (si elle est suprieure 200px) est rduite 200px et lautre en proportion (voir le filtre image_reduire).

Manuel de rfrence des boucles et balises

103/186

#LOGO_AUTEUR
Aot 2010

Cette balise affiche le logo de lauteur, ventuellement avec la gestion du survol. Cette balise affiche le logo de lauteur, ventuellement avec la gestion du survol. Les variantes #LOGO_AUTEUR_NORMAL et #LOGO_AUTEUR_SURVOL permettent un affichage plus fin de ces deux variantes du logo. Depuis SPIP 2.1, lappel des diverses balises #LOGO_xxx ainsi que leur argumentation ont t modifis. - Dans un squelette, le logo sinstalle de la manire suivante :
[(#LOGO_AUTEUR|alignement|adresse)]

Lalignement ne peut tre que left, right, center, top ou bottom. Cet alignement sera traduit dans le code html par class=" ... " (penser dfinir la classe correspondante dans ses feuilles de style). Ladresse est lURL de destination du lien de ce logo (par exemple #URL_AUTEUR). Si lon nindique pas dadresse, limage nest pas cliquable. Exemple :
[(#LOGO_AUTEUR|left|#URL_AUTEUR)]

affiche le logo de lauteur gauche avec un lien sur le logo vers ladresse de la fiche auteur. - Les filtres dimage peuvent sappliquer sur le logo de lauteur. Exemple :
[(#LOGO_AUTEUR||image_reduire{200,200})]

affiche le logo de lauteur, dont la plus grande des 2 tailles (si elle est suprieure 200px) est rduite 200px et lautre en proportion (voir le filtre image_reduire). - Le squelette auteur.html de la dist propose dafficher un favicon personnalis sur la page auteur partir du logo :
[(#MODELE{favicon}{favicon=#LOGO_AUTEUR})]

Depuis SPIP 2.1 les filtres de logos ont la mme syntaxe que tous les autres. Un seul pipe suffit :
[(#LOGO_XXX|filtre)]

Mais : - #LOGO_XXX** renvoie le fichier - #LOGO_XXX{top/left/right/center/bottom} gnre un alignement - #LOGO_XXX{url} gnre un logo qui pointe vers lurl.

Manuel de rfrence des boucles et balises

104/186

#LOGO_AUTEUR_NORMAL
avril 2010

Cette balise affiche le logo de lauteur, sans survol. Dans un squelette, il sutilise comme la balise #LOGO_AUTEUR :
[(#LOGO_AUTEUR_NORMAL|alignement|adresse)]

#LOGO_AUTEUR_SURVOL
juillet 2010

Cette balise affiche ltat de survol du logo de lauteur. Autrement dit le passage de la souris sur le logo de lauteur dclenche laffichage du logo de survol. - Par dfaut, les logos de survol ne sont pas activs dans SPIP ; on associe alors un seul logo un objet (article, auteur, rubrique...) Pour pouvoir grer laffichage dun logo de survol, il faut tout dabord activer loption "Utiliser les logos de survol " dans linterface dadministration de SPIP, sur la page "Configuration > Contenu du site" (ecrire/?exec=configuration).

- Dans un squelette, dans une boucle AUTEURS :


[(#LOGO_AUTEUR|alignement|adresse)]

affiche le logo de lauteur et au passage de la souris le logo de survol sil existe. Le code html est gnr automatiquement par SPIP. - Si lon souhaite afficher directement le logo de survol, il faudra indiquer, dans la boucle AUTEURS du squelette :
[(#LOGO_AUTEUR_SURVOL|alignement|adresse)]

- Si lon souhaite afficher le logo de survol sil existe, et sinon le logo de larticle il faudra crire, dans la boucle AUTEURS du squelette :
[(#LOGO_AUTEUR_SURVOL||sinon{#LOGO_AUTEUR})]

Manuel de rfrence des boucles et balises

105/186

#LOGO_DOCUMENT
Avril 2010

Affiche limage-logo associe un document. La balise #LOGO_DOCUMENT utilise dans une boucle DOCUMENTS affiche limage-logo associe au document :

Soit une icone standard dtermine par le type du fichier [1] ; Soit, seulement pour les documents-image et seulement si la gnration automatique des miniatures des images. a t slectionne en configuration sur la page ecrire/?exec=config_fonctions, une rduction du document image ; Soit la vignette personnalise qui a t associe manuellement au document lui-mme.

Notes

[1] par exemple :

...

#LOGO_SITE_SPIP
Avril 2010 #LOGO_SITE_SPIP

affiche le logo du site. Cette image peut tre change depuis lespace priv en cliquant sur "Configuration".

Cette balise renvoie le logo du site (cf. IMG/siteon0.png) qu'il ne faut pas le confondre avec le logo par dfaut des rubriques, aussi dsign "logo standard des rubriques" (cf. IMG/rubon0.png) qui, lui, peut tre chang en cliquant sur "dition" depuis lespace priv.

#MENU_LANG, #MENU_LANG_ECRIRE
Avril 2010 #MENU_LANG

et #MENU_LANG_ECRIRE : ces balises fabriquent et affichent un menu de langues permettant au visiteur dobtenir la page en cours dans la langue choisie. La premire balise affiche la liste des langues du site ; la seconde la liste des langues de lespace priv (elle est utilise sur la page de connexion lespace priv).

Manuel de rfrence des boucles et balises

106/186

#MIME_TYPE
Septembre 2009 maj : Mars 2010 #MIME_TYPE affiche le type MIME du fichier par exemple : image/jpeg , cf. Type de mdia internet.

#NOM_SITE
Dcembre 2008

- #NOM_SITE et #URL_SITE affichent le nom et lurl du lien hypertexte de larticle (si vous avez activ cette option).

#NOM_SITE_SPIP
mars 2010

affiche le nom du site. linstallation dun SPIP vierge, le nom du site par dfaut est "Mon site SPIP". Pour le modifier, vous devez cliquer sur "Configuration" et changer le texte dans le champ "Nom de votre site".
#NOM_SITE_SPIP

#NOTES
Janvier 2009

- #NOTES affiche les notes de bas de page (calcules partir de lanalyse du texte).

Manuel de rfrence des boucles et balises

107/186

#PARAMETRES_FORUM
Janvier 2009

- #PARAMETRES_FORUM fabrique et affiche la liste des variables exploites par le formulaire permettant de rpondre cet article. Par exemple :
[<a href="spip.php?page=forum&(#PARAMETRES_FORUM)">Rpondre cet article</a>]

On peut lui passer un paramtre spcifiant ladresse de retour aprs avoir post le message. Par exemple :
<a ref="spip.php?page=forum&(#PARAMETRES_FORUM{#SELF})"> Rpondre cet article</a>

renverra le visiteur sur la page actuelle une fois que le message a t valid.

#PETITION
Janvier 2009 maj : fvrier 2010

- #PETITION affiche le texte de la ptition si elle existe. Si elle existe mais que le texte est vide, retourne un espace (une chane non vide sans incidence dans une page html). Ceci permet de tester lexistence dune ptition dans une boucle (ARTICLES). Exemple tir de la dist, le squelette inc-petition.html nest inclus que si la ptition de larticle est active :
[(#PETITION|?{' '})<INCLURE{fond=inc-petition}{id_article}>]

Exemple plus labor : on inclut le squelette inc-petition.html, soit sil y a des signatures, soit sil y a une ptition. En effet, lorsque lon supprime une ptition via lespace priv, afin de clore la possibilit de la signer, le code prcdent supprime galement la liste des signatures.
<BOUCLE_signatures(SIGNATURES){id_article}{0,1}> <INCLURE{fond=inc-petition}{id_article}> </BOUCLE_signatures> [(#PETITION|?{' '}) <INCLURE{fond=inc-petition}{id_article}> ] <//B_signatures>

Manuel de rfrence des boucles et balises

108/186

#PLUGIN
Aot 2010

Cette balise permet, soit de tester la prsence dun plugin actif sur le site, soit daccder aux informations contenues dans le fichier plugin.xml si le plugin est actif (aucune information nest fournie si le plugin est inactif).
#PLUGIN{prefixe_du_plugin} renvoie true si le plugin est actif. #PLUGIN{prefixe_du_plugin, information_demandee} renvoie linformation

demande sur le plugin comme sa version, son nom, sa description... #PLUGIN{prefixe_du_plugin, tout} renvoie toutes les informations du plugin sous forme dun tableau associatif qui pourra tre affect une variable pour tre affich en utilisant le filtre |table_valeur.

Le prfixe du plugin est le champ crit dans la balise XML <prefix> du fichier plugin.xml, fichier qui se trouve toujours la racine du rpertoire contenant les scripts du plugin. Lutilisation la plus frquente de la balise #PLUGIN consiste tester ltat dactivit du plugin pour afficher un code HTML :
[(#PLUGIN{prefixe_du_plugin}|oui) blablabla...] plugin prefixe_du_plugin est activ.

affichera "blablabla..." si le

#POPULARITE
Dcembre 2008

- #POPULARITE affiche le pourcentage de popularit de cet article ; voir la documentation La popularit des articles .

#PUCE
avril 2010

affiche une puce (pas complexe comprendre) image prsente la racine de la dist. Vous pouvez personnaliser cette puce-image en crant un fichier "puce.gif" et le placer dans un dossier "squelettes".
#PUCE

Manuel de rfrence des boucles et balises

109/186

#PS
Dcembre 2008

- #PS affiche le post-scriptum.

#REM
Mars 2010

La balise #REM ne produit aucun affichage : elle permet de commenter le code des squelettes. La balise #REM permet de commenter le code des squelettes :
[(#REM) Ceci est une remarque ]

La balise et sa partie optionnelle sont purement et simplement supprimes lors du calcul du squelette. [(#REM)] napparat pas dans le code HTML du site public et ne produit donc aucun affichage. Attention toutefois aux effets pervers de #REM : la partie optionnelle dune balise ne devant pas contenir de boucle, lcriture ci-dessous
[(#REM) essai de boucle: ne pas afficher ! <BOUCLE_a(ARTICLES){...}{0,1}> #ID_ARTICLE - #TITRE </BOUCLE_a> ]

affichera (exemple) : [() essai de boucle : ne pas afficher ! 18 - Mon titre darticle ]

Manuel de rfrence des boucles et balises

110/186

#SELF
Dcembre 2009 maj mars 2010 #SELF

retourne lURL de la page appele, nettoye des variables propres lexcution de

SPIP. retourne lURL de la page courante. Les variables propres lexcution de SPIP (par exemple, var_mode) sont supprimes.
#SELF

Exemple : pour une page avec lurl spip.php?article25&var_mode=recalcul, la balise #SELF place dans article.html retournera spip.php?article25. Usages - Certaines balises de formulaires acceptent un paramtre pour prciser sur quelle page le visiteur doit tre redirig aprs avoir valid le formulaire. #SELF peut alors tre utilis pour quil revienne sur la page courante. Exemple : [(#FORMULAIRE_FORUM{#SELF})] - Avec le filtre |parametre_url, pour ajouter des variables dans lURL de la page courante. Exemple : [(#SELF|parametre_url{'id_mot','3'})] ajoute id_mot=3 lURL courante. Voir |parametre_url pour plus de dtails. - #SELF est utile dans les formulaires, pour que lutilisateur revienne la page courante aprs validation :
<form action="#SELF"> [(#SELF|form_hidden)] ... </form>

Le filtre |form_hidden calcule les champs cachs (hidden) du formulaire partir des arguments de #SELF. Voir |form_hidden. #SELF dans les squelettes inclus Lorsque lun des paramtres de lURL de la page doit tre rcupr dans un squelette inclus, #SELF doit tre ajout comme paramtre de lINCLURE. De cette faon, un cache diffrent du squelette inclus sera cr pour chaque URL (Ceci constitue une scurit contre une potentielle attaque XSS). - <INCLURE{fond=mon_squelette}{self=#SELF}> - <INCLURE{fond=mon_squelette}{self}> - <INCLURE{fond=mon_squelette}{env}> Ce paramtre {self=#SELF} doit galement tre pass un INCLURE lorsque lon veut utiliser la balise #PAGINATION dans un squelette inclus, tant donn que celle-ci repose sur la fonction self pour retrouver la variable debut_....

Manuel de rfrence des boucles et balises

111/186

#SESSION
Janvier 2009 maj : mars 2010 #SESSION,

permet daccder aux informations lies au visiteur authentifi et de diffrencier automatiquement le cache en fonction du visiteur.

#SESSION permet daccder certaines informations propres au visiteur. Les informations pour un visiteur authentifi sont :

id_auteur : numro interne unique de lauteur nom : nom de signature de lauteur bio : courte biographie sur lauteur email : ladresse mail de lauteur nom_site : nom/titre du site internet de lauteur url_site : adresse http du site internet de lauteur login : identitifiant de connexion statut : 0minirezo (administrateur ou administrateur restreint), 1comite (rdacteur), 6forum (visiteur) maj : date et heure de la dernire modification des donnes de lauteur (toute modification sur les informations de lauteur contenues dans spip_auteurs telles que la dernire connexion, dernier message interne envoy, dernire modification de fiche perso...) pgp : cl pgp publique en_ligne : date et heure de la dernire connexion (pas celle en cours) imessage : oui si lauteur a envoy un message (priv) messagerie : prefs : liste des prfrences de lauteur (essentiellement affichage de lespace priv, souvenir du cookie...) o couleur => 1 6, code de la couleur de lespace priv o display => 1 (textes seuls) ; 2 (icones et textes) ; 3 (icones seuls) o cnx => vide ou perma (si connect plusieurs jours a t coch) cookie_oubli : hash du cookie de remplacement envoy si oubli, puis vide source : spip ou ldap lang : langue utilise dans lespace priv extra : liste des champs extra dclars pour lauteur auth : type dauthentification utilise (spip, ldap) cookie : oui si connect via cookie - inexistant si connect autrement (dont PHP_AUTH_USER) hash_env : code interne (hash) identifiant de faon unique la session du visiteur ip_change : FALSE tant que lIP du connect ne change pas. TRUE si lIP du connect change. SPIP recre alors une nouvelle session pour le primo connect (avec ip_change FALSE) ; cette nouvelle session dconnectant lventuel voleur de cookie.

Pour afficher une information si et seulement si le visiteur est administrateur :


[(#SESSION{statut}|=={0minirezo}|oui) restreint ou non] Vous tes administrateur,

De la mme manire, vous pouvez rserver laffichage dun champ selon le statut :

Manuel de rfrence des boucles et balises

112/186

[(#SESSION{statut}|=={0minirezo}|oui)

#DESCRIPTIF]

De mme on peut complexifier le cas, en chargeant un squelette nomm reservee.html :


[(#SESSION{statut}|=={0minirezo}|oui) <INCLURE{fond=reservee, env}>]

Cette balise se complte assez bien avec #AUTORISER.

#SESSION_SET
Mai 2009 maj : mai 2010

Permet dinsrer dans la balise #SESSION des donnes supplmentaires


#SESSION_SET sutilise ainsi on a #SESSION_SET{variable, valeur}, la valeur sauvegarde dans le tableau php sous la forme $GLOBALS['visiteur_session']['variable'] = 'valeur';

Linformation peut tre nouveau lue via #SESSION{variable} Cette balise permet donc dajouter une donne quelconque la session ouverte lors de laccs dun internaute Spip. Elle peut tre utilise sans modration pour conserver des lments dont on souhaite disposer tout au long de la session ouverte, sans avoir besoin de refaire une boucle ou une autre manipulation. La syntaxe La syntaxe de base est trs simple : #SESSION_SET{variable,valeur} Llment variable est un nom quelconque qui permettra de faire rfrence ce que lon veut utiliser, et valeur est son contenu. Mais un exemple vaut un long discours. Par exemple, je suis passionn par les lphants, et je voudrais lafficher tout moment ... Donc : #SESSION_SET{mapassion,lphants} mettra lphants dans ma passion. Pour lutiliser, cest trs simple : #SESSION{mapassion} affichera lphants. Utilisation pratique Vous navez vu ci-dessus quun exemple pas forcment trs concret. Lutilisation de la balise #SESSION_SET{variable,valeur} est particulirement pertinent ds lors quun accs un site se fait avec identification (du type login public) afin dajouter certaines donnes lies dune faon ou dune autre, dans la session de la personne logue. Si vous affichez la balise #SESSION sur une page, vous verrez quelle contient un grand nombre de donnes, notamment concernant lauteur ou visiteur identifi. Laffichage dune de ces donnes se fait directement via #SESSION, sauf si vous avez ajout des champs extra. Dans #SESSION{extra}, vous verrez safficher, en format texte le contenu de ce champ, sous la forme (par ex.)

Manuel de rfrence des boucles et balises

113/186

a:2{s:10:"id_salarie";s;1:"1";s:7:"college";s:5:"Cadre";}.

Cela vous permet bien sr de vrifier quil y a bien ce que vous cherchez, mais laffichage laisse dsirer ... [1] Que faire pour remdier cela ? Utiliser #SESSION_SET bien sr, avec la balise #EXTRA !! Je voudrais afficher le collge : Dans une boucle AUTEURS, je vais ajouter ma session le collge de la personne identifie :
<BOUCLE_auteur(AUTEURS){id_auteur=#SESSION{id_auteur}}{tout}>#SESSION_SET{c ollege,(#EXTRA|college)} </BOUCLE_auteur>

Et voil ! Maintenant, sur nimporte quelle page du site, affichez le collge :


[(#SESSION{college})]

Vous pouvez lutiliser tout seul, ou dans une boucle, soit pour afficher le collge, soit dans un critre spcifique, par ex.
<BOUCLE_articles(ARTICLES) {id_rubrique}{titre_mot = #SESSION{college}} {par num titre, date} {doublons} {pagination 20}>

Aller plus loin ? Rappelons-nous que spip 2.0.x permet maintenant douvrir des connexion des bases de donnes extrieures celles de spip, mme distantes ... Quoi de plus simple, maintenant, dajouter une ou des donnes issues de ces bases la session ouverte ... Une (ou plusieurs)boucles louverture, quelques #SESSION_SETvariable,valeur, et jai ma disposition, rapidement, tout ce que dont jai besoin pour dynamiser mon site ... Notes [1] rappel : pour afficher en mode brut (pour vrification) le contenu dtaill de la balise, il est possible dutiliser lcriture :
[<pre>(#SESSION*|unserialize|var_export{1})</pre>]

Manuel de rfrence des boucles et balises

114/186

#SET et #GET
Dcembre 2009 maj : mars 2010

La balise #SET dfinit une variable qui sera utilisable dans lensemble du squelette. La balise #GET permet ensuite de rcuprer cette variable.
#SET{variable,valeur} #GET{variable} retourne "valeur".

La variable dfinie par #SET peut tre une chane de caractres ou un tableau. - Une chane de caractres :
#SET{ma_chaine, article de #NOM} #GET{ma_chaine}

affichera :

article de Toto - Un tableau :


#SET{mon_tablo, #ARRAY{a,un,b,deux,c,trois,d,quatre}} [(#GET{mon_tablo}|foreach)]

affichera :

a => un b => deux c => trois d => quatre

Usages avancs avec les chanes de caractres - Une expression rgulire :


#SET{reg1, '(^.*/[^/]+[/])'} #SET{reg2, '\.[\w-_]+?'} <BOUCLE_def(DOCUMENTS){tout}> [(#FICHIER|replace{#GET{reg2}}|replace{#GET{reg1}})]<hr /> </BOUCLE_def>

permet de rcuprer et dafficher le nom du fichier dun document, dbarrass de son chemin daccs (path) et de son extension. Par exemple, si #FICHIER est IMG/pdf/Stats_Sejour_au_311207.pdf nous afficherons Stats_Sejour_au_311207. Lintrt ici dutiliser les balises #SET et #GET pour lexpression rgulire est de permettre lutilisation des crochets ([ et ]) dans le filtre |replace. - Le rsultat retourn par un INCLURE :
[(#SET{mon_retour, #INCLURE{fond=calculs}})]

Valeur par dfaut

Manuel de rfrence des boucles et balises

115/186

Si variable na pas t dfinie par un #SET{variable, valeur} pralable, il est possible de prciser une valeur par dfaut lors de linsertion de la balise #GET : #GET{variable, valeur_par_defaut} retournera valeur_par_defaut, si variable na pas t dfinie auparavant. Attention : cette mthode nattribue pas valeur_par_defaut variable . Porte de la variable dfinie par #SET Les valeurs dfinies par la balise #SET restent locales au squelette o elles ont t dfinies. Ainsi, la valeur dune variable dfinie par un SET dans un fichier inclu ne pourra pas tre rcupre par le GET correspondant dans le fichier incluant.

#SOUSTITRE
Dcembre 2008

- #SOUSTITRE affiche le soustitre.

#SQUELETTE
Mars 2009 #SQUELETTE

retourne le chemin du squelette courant.

#SURTITRE
Dcembre 2008

- #SURTITRE affiche le surtitre.

#TAILLE
8 mars

affiche le poids en octets du document. Pour de gros fichiers, cette valeur devient rapidement inutilisable ; on pourra donc lui appliquer le filtre |taille_en_octets, qui affichera successivement en octets, en kilooctets, ou mme en mgaoctets :
#TAILLE [(#TAILLE|taille_en_octets)]

Manuel de rfrence des boucles et balises

116/186

#TEXTE
Dcembre 2008

- #TEXTE affiche le texte principal de larticle.

#TITRE
Dcembre 2008

- #TITRE affiche le titre de larticle.

#TOTAL_BOUCLE
Septembre 2009 maj : Mars 2010

La balise #TOTAL_BOUCLE retourne le nombre total de rsultats affichs par la boucle. On peut lutiliser dans la boucle, dans ses parties optionnelles avant et aprs ou mme dans la partie alternative aprs la boucle. Par exemple, pour afficher le nombre de documents associs un article :
<BOUCLE_art(ARTICLES){id_article}> <BOUCLE_doc(DOCUMENTS) {id_article}></BOUCLE_doc> [il y a (#TOTAL_BOUCLE) document(s).] <//B_doc> </BOUCLE_art>

#TOTAL_UNIQUE
Octobre 2009

La balise #TOTAL_UNIQUE affiche le nombre dlments fitrs par le filtre |unique. On utilisera #TOTAL_UNIQUE pour afficher le nombre de fois o #BALISE a t filtre par |unique et #TOTAL_UNIQUE{famille} pour afficher le nombre de fois o #BALISE a t filtre par |unique{famille}.

Manuel de rfrence des boucles et balises

117/186

#TYPE_DOCUMENT
Mars 2010 #TYPE_DOCUMENT

affiche le type du document.

par exemple, pour un fichier dextension ods et de mime_type application/vnd.oasis.opendocument.spreadsheet , #TYPE_DOCUMENT affichera opendocument spreadsheet .

#URL_ARTICLE
Janvier 2009 maj : avril 2010

La balise #URL_ARTICLE affiche lurl relative (cest dire sans la partie http://nom_domaine.ext/) de larticle retourn par une boucle ARTICLES. Cette balise permet ainsi dcrire des liens : <a href="#URL_ARTICLE"> ... </a> indpendamment du choix de configuration effectu pour le type durls. Laffichage retourn pourra tre :

spip.php ?article146 (page) Titre_de_l_article.html (propres2) article146.html (html) ...

En cas de changement de type durls, la balise affichera toujours la bonne url. En dehors dune boucle ARTICLES, il est possible de demander laffichage de lurl dun article spcifique en passant son id comme argument la balise : #URL_ARTICLE{44} affichera alors lurl de larticle did 44.

Manuel de rfrence des boucles et balises

118/186

#URL_AUTEUR
Juin 2010

#URL_AUTEUR affiche ladresse de la page spip.php ?auteurxxx. Dans la boucle AUTEURS, #URL_AUTEUR affiche ladresse de la page de lauteur : spip.php?auteurxxx (o xxx est le numro didentifiant de lauteur). Exemple de boucle AUTEURS, qui, dans une boucle ARTICLES, affiche le nom de lauteur de larticle avec un lien vers sa page :
<BOUCLE_auteur(AUTEURS) {id_article}> <a href="#URL_AUTEUR">#NOM</a> </BOUCLE_auteur>

Exemple de boucle AUTEURS qui affiche le logo de lauteur align gauche, avec un lien vers la page de lauteur [1] :
[(#LOGO_AUTEUR{#URL_AUTEUR,left})]

Notes [1] avant spip 2.1 on crivait : [(#LOGO_AUTEUR|left|#URL_AUTEUR)]

#URL_DOCUMENT
Mars 2010 #URL_DOCUMENT

affiche lURL relative (depuis IMG/) du document.

Associe #LOGO_DOCUMENT, cette balise gnre un lien cliquable : [(#LOGO_DOCUMENT|#URL_DOCUMENT)] affichera une vignette cliquable pointant document.

vers le

Manuel de rfrence des boucles et balises

119/186

#URL_RUBRIQUE
avril 2010

La balise #URL_RUBRIQUE affiche lurl relative (cest dire sans la partie http://nom_domaine.ext/) de la rubrique retourne par une boucle RUBRIQUES ou ARTICLES. Cette balise permet ainsi dcrire des liens : <a href="#URL_RUBRIQUE"> ... </a> indpendamment du choix de configuration effectu pour le type durls. Laffichage retourn pourra tre :

spip.php ?rubrique18 (page) -Titre_de_la_rubrique-.html (propres2) rubrique18.html (html) ...

En cas de changement de type durls, la balise affichera toujours la bonne url. En dehors dune boucle RUBRIQUES ou ARTICLES, il est possible de demander laffichage de lurl dune rubrique spcifique en passant son id comme argument la balise : #URL_RUBRIQUE{12} affichera alors lurl de la rubrique did 12.

#URL_SITE_SPIP
Mars 2010 #URL_SITE_SPIP affiche ladresse du site. Elle ne comprend pas le / final, ainsi vous pouvez crer un lien du type #URL_SITE_SPIP/#URL_ARTICLE Pour connatre lurl de votre site, vous devez cliquer sur "Configuration" et vous verrez cette information inscrite dans le champ "URL de votre site".

#URL_PAGE
Aot 2010

retourne une url de type page (cf. Utiliser des URLs personnalises), vers la page passe en paramtre et qui pourra tre utilise dans un lien. Par exemple, pour accder la page gnre par le squelette toto.html, situe dans votre dossier "squelettes", #URL_PAGE{toto} gnra automatiquement lurl spip.php?page=toto. Un second paramtre est autoris pour ajouter des paramtres lurl. Exemple #URL_PAGE{toto,id_article=#ID_ARTICLE} gnrera lurl spip.php?page=toto&id_article=XXX.
#URL_PAGE

Si vous souhaitez transmettre davantage de paramtres, il faudra prfrer la syntaxe suivante :


[(#URL_PAGE{message}|parametre_url{'id_article',#ID_ARTICLE}| parametre_url{'lang',#LANG})] qui donnera spip.php?page=message&id_article=XXX&lang=YY.

Manuel de rfrence des boucles et balises

120/186

#URL_SITE, #NOM_SITE
Dcembre 2008

- #NOM_SITE et #URL_SITE affichent le nom et lurl du lien hypertexte de larticle (si vous avez activ cette option).

#VAL
Juin 2009 maj : Dcembre 2009

La Balise #VAL prend un paramtre qui est retourn tel quel. Elle permet par exemple dappliquer des filtres sur des constantes. Par exemple [(#VAL{<:chaine_de_langue:>}|image_typo)] <:chaine_de_langue|image_typo:>) ou encore Si vous dsirez attribuer une feuille de styles (.css) par jour de la semaine, vous pouvez procder de la manire suivante :
[<link rel="stylesheet" href="squelettes/styles/jour_(#VAL{w}|date{#DATE|strtotime}).css" type="text/css" />]

(qui est quivalent

Des feuilles de styles nommes respectivement jour_0.css jour_6.css (traduire : jour_dimanche.css jour_samedi.css)

#VISITES
Dcembre 2008

- #VISITES affiche le nombre total de visites sur cet article.

Manuel de rfrence des boucles et balises

121/186

Critres
{branche}
Dcembre 2008

- {branche} slectionne lensemble des articles de la rubrique ET de ses sous-rubriques. (Cest une sorte dextension du critre {id_secteur}. Toutefois, linverse de {id_secteur=2}, il nest pas possible dappeler directement une branche en faisant par exemple {branche=2} : techniquement parlant, il faut que la rubrique en question figure dans le contexte courant. Ce critre est utiliser avec parcimonie : si votre site est bien structur, vous ne devriez pas en avoir besoin, sauf dans des cas trs particuliers.)

{collecte}
Octobre 2009

Le critre {collecte} permet de spcifier linterclassement (la collation ) pour la requte gnre par une boucle (appel de la clause COLLATE de MySQL [1]). Le critre {collecte}, permet de forcer la requte sql, gnre par la boucle laquelle il est pass, utiliser un interclassement spcifique pour la clause ORDER BY (critre {par ...}). Exemple Supposons une base en utf-8 avec ses tables en utf8 (DEFAULT CHARSET = utf8) dans ce jeu de caractre (CHARACTER_SET_NAME) il est possible dutiliser 21 collations (interclassements) diffrentes [2] : COLLATION_NAME CHARACTER_SET_NAME utf8_bin utf8 utf8_czech_ci utf8 utf8_danish_ci utf8 utf8_esperanto_ci utf8 utf8_estonian_ci utf8 utf8_general_ci utf8 utf8_hungarian_ci utf8 utf8_icelandic_ci utf8 utf8_latvian_ci utf8 utf8_lithuanian_ci utf8 utf8_persian_ci utf8 utf8_polish_ci utf8 Manuel de rfrence des boucles et balises 122/186

COLLATION_NAME CHARACTER_SET_NAME utf8_roman_ci utf8 utf8_romanian_ci utf8 utf8_slovak_ci utf8 utf8_slovenian_ci utf8 utf8_spanish2_ci utf8 utf8_spanish_ci utf8 utf8_swedish_ci utf8 utf8_turkish_ci utf8 utf8_unicode_ci utf8 partir de l, imaginons que dans la table spip_articles de cette base, table par dfaut en interclassement utf8_general_ci, se trouvent les articles titrs : Nana nina Nina Nia ia ina ina Nono Nunu La boucle :
<BOUCLE_a(ARTICLES) {par titre} {"<br />"}> #TITRE </BOUCLE_a>

retournera ces articles dans lordre alphabtique correspondant linterclassement par dfaut de la table : Nana nina ina Nina Nia ia ina Nono Nunu La boucle :
#SET{collation, utf8_spanish_ci} <BOUCLE_a(ARTICLES) {par titre} {collecte #GET{collation}} {"<br />"}> #TITRE </BOUCLE_a>

Manuel de rfrence des boucles et balises

123/186

retournera, elle, ces articles dans lordre alphabtique correspondant linterclassement demand : Nana nina Nina Nia Nono Nunu ina ina ia Ainsi les (n tilde) seront classs aprs les n (n nus). Cela correspond en effet lordre alphabtique castillan :

Le est la quinzime lettre de version castillane de lalphabet latin, entre le N et le O dans lordre alphabtique.

La requte MySQL produite est alors :


SELECT articles.titre, articles.lang FROM spip_articles AS `articles` WHERE articles.statut = 'publie' AND articles.date < '9999-12-31' ORDER BY articles.titre COLLATE utf8_spanish2_ci

Limite Il nest pas possible de faire fonctionner le critre {collecte} en lui affectant directement sa valeur dans la liste des arguments de boucle : les {collecte utf8_spanish_ci}, {collecte 'utf8_spanish_ci'}, {collecte{utf8_spanish_ci}}... ne fonctionneront pas et afficheront une erreur php. Il nest possible de lutiliser que par #GET{} aprs lavoir pralablement dclar en #SET{} Notes [1] Voir la documentation officielle pour la clause COLLATE de Mysql : http://dev.mysql.com/doc/refman/5.0... et : Un exemple de leffet de collation

Manuel de rfrence des boucles et balises

124/186

[2] Dans le jeu de caractre latin1, 8 collations sont accessibles : COLLATION_NAME CHARACTER_SET_NAME latin1_bin latin1 latin1_danish_ci latin1 latin1_general_ci latin1 latin1_general_cs latin1 latin1_german1_ci latin1 latin1_german2_ci latin1 latin1_spanish_ci latin1 latin1_swedish_ci latin1

{critre ?}
Septembre 2009

Un critre conditionnel (critre associ loprateur logique ? ) ne sera pris en compte par sa boucle que si les donnes requises par ce critre sont prsentes dans lenvironnement dexcution de la boucle. - <BOUCLE_abc(ARTICLES) {id_rubrique ?}>

Sil existe un id_rubrique (nn) dans lenvironnement dexcution de la boucle, alors la boucle ne slectionnera que les donnes correspondantes lgalit id_rubrique =
#ENV{id_rubrique}

Sil nexiste pas did_rubrique dans lenvironnement dexcution de la boucle, le critre sera totalement ignor.

- On notera que {id_rubrique ?} est quivalent {id_rubrique?}.

{critre IN valeur1, valeur2[, valeur3,..., valeurN]}


Aot 2009 maj : avril 2010 {... IN ...}

limite laffichage aux rsultats ayant un critre appartenant un ensemble fini. limite laffichage aux rsultats ayant le critre xxxx gal a, b, c ou d.

{xxxx IN a,b,c,d}

Les rsultats sont tris dans lordre indiqu (sauf demande explicite dun autre critre de tri). Il est aussi possible de slectionner des chanes de caractres, par exemple avec {titre IN
'Chine', 'Japon'}

Il est galement possible de passer en argument un tableau.

Manuel de rfrence des boucles et balises

125/186

Il peut sagir dun tableau dfini par une balise #ARRAY ou bien dun tableau provenant dune balise #ENV**{mon_post}. Si #ENV{mon_post} est un tableau (venant par exemple de saisies de formulaire dont lattribut name se termine par []), et si les filtres danalyse ont t dsactivs en suffixant cette balise par une double toile, alors chaque lment du tableau sera considr comme argument de IN, SPIP appliquant les filtres de scurit sur chacun deux [1]. Le squelette standard formulaire_forum_previsu fournit un exemple dutilisation avec une boucle MOTS ayant le critre {id_mot IN #ENV**{ajouter_mot}} : cette boucle slectionne seulement les mots-cls appartenant un ensemble indiqu dynamiquement. Ici, cet ensemble aura t construit par le formulaire du squelette standard choix_mots , qui utilise lattribut name=ajouter_mot[]. Utilisation conditionnelle de loprateur IN dans un critre de boucle exemple dutilisation : - si #ID_ARTICLE est prsent dans lenvironnement et quelle que soit sa valeur :
<BOUCLE_a(ARTICLES) {id_article ?IN 11,12,13}>

naffichera que les articles dont lid est dans la liste IN


<BOUCLE_a(ARTICLES) {id_article ?!IN 11,12,13}>

naffichera que les articles dont lid nest pas dans la liste IN [2] - si #ID_ARTICLE nest pas prsent dans lenvironnement :
<BOUCLE_a(ARTICLES) {id_article ?IN 11,12,13}>

affichera tous les articles y compris ceux dont lid est dans la liste IN
<BOUCLE_a(ARTICLES) {id_article ?!IN 11,12,13}>

affichera tous les articles y compris ceux dont lid est dans la liste IN [2]

Notes
[1] voir aussi la page de la balise # ENV [2] pour rappel : {id_article !IN 11,12,13} slectionne les articles dont lid nest pas dans la liste 11, 12, 13 (voir critre !oprateur valeur)

{critre LIKE valeur}


Aot 2009

Le critre {... LIKE ...} correspond au critre de comparaison SQL LIKE. Par exemple, pour rechercher les AUTEURS dont le login commence par paul :
{login LIKE paul%}

Manuel de rfrence des boucles et balises

126/186

Nous pouvons aussi utiliser une balise SPIP dans le critre. Dans ce cas vous devez penser lentourer de parenthses. Par exemple, pour rechercher les email contenant la valeur de la balise #ENV{email} :
{email LIKE %(#ENV{email})%}

Autre exemple, pour trouver les email qui ne contiennent pas le critre de recherche, il est possible de faire :
{!email LIKE %(#ENV{email})%}

{critre ?oprateur valeur}


Mars 2010

Prendre en compte le critre uniquement si pour ce critre une valeur est prsente dans lenvironnement. Le critre ne sera pris en compte par la boucle que si une variable de mme nom est prsente dans lenvironnement. - par exemple : {date ?!= #ENV{date}},
{email ?LIKE %(#ENV{email})%}

- ou encore :
<BOUCLE_abc(ARTICLES) {titre ?<= #ENV{titre}}> o Sil existe une variable de nom titre dans lenvironnement

dexcution de la boucle, alors la boucle ne slectionnera que les donnes correspondantes titre <= #ENV{titre} (les articles dont le titre est alphabtiquement plac avant le titre prsent dans lenvironnement) Sil nexiste pas de titre dans lenvironnement dexcution de la boucle, le critre sera totalement ignor (tous les articles seront slectionns).

- On notera que si peu importe la prsence ou non despaces avant ou aprs loprateur ({titre ?<= #ENV{titre}} est quivalent {titre?<=#ENV{titre}}), le ? doit tre coll loprateur.

{ !critre oprateur valeur}


Aot 2009

Oprateur logique du Complmentaire, indique de prendre le complment lopration. Cette criture est principalement utile pour les boucles faisant intervenir des jointures multiples entre tables : par exemple mots-cl/articles ou documents/articles... Elle permet de slectionner non seulement les donnes ne rpondant pas lquation mais

Manuel de rfrence des boucles et balises

127/186

aussi celles qui ne sont pas concernes par le critre (une table dont la jointure avec une autre table est inexistante).
{!titre_mot = 'X'} : retourne toutes les donnes sauf celles lies au mot-cl X ; cest dire y compris les donnes lies aucun mot-cl. {!id_rubrique < 12}

: retourne les donnes des rubriques dont lid #ID_RUBRIQUE nest pas strictement infrieur 12 (donc qui est suprieur ou gal 12). : retourne toutes les donnes dont lid auteur nest ni 1, ni 2.

{!id_auteur IN 1, 2}

Lexemple suivant est plus complexe, il indique quil ne faut pas prendre en compte les auteurs dont le login contient la chane utilisateur.
{!login LIKE %utilisateur%}

{critre !oprateur valeur}


Aot 2009

Oprateur logique de la ngation ; il inverse le sens de loprateur qui suit.


{id_rubrique != 12}

: retourne les donnes des rubriques dont lid (#ID_RUBRIQUE) nest

pas gal 12.


{titre !== ^(a|e|i|o|u|y)} : retourne les donnes de lobjet (article, titre (#TITRE) ne commence pas par une voyelle (insensible la casse).

rubrique...) dont le

{extension !IN gif, jpg, png} : retourne les donnes des documents dont lextension nest pas dans la liste gif, jpg ou png.

{date}
Dcembre 2008

- Les critres {date} (ou {date=...} ou {date==...}) permettent de slectionner un article en fonction de la date passe dans lURL.

{doublons}
6 janvier 2010 {doublons} permet dinterdire laffichage des rsultats dj affichs dans dautres boucles utilisant ce critre.

Manuel de rfrence des boucles et balises

128/186

historique : A partir de [SPIP 1.2] et jusqu [SPIP 1.7.2], seules les boucles ARTICLES, RUBRIQUES, DOCUMENTS et SITES acceptaient ce critre. Le critre {doublons} une fois dcouvert devient rapidement indispensable vos squelettes [1]. Sil est dun emploi un poil curieux, il permet des tris trs intressants mais qui napparaissent pas immdiatement la lecture de la documentation de base sur Spip.net qui nous dit : Le critre {doublons} ou {unique} [2] : permet dinterdire laffichage des rsultats dj affichs dans dautres boucles utilisant ce critre. Ces deux critres sont rigoureusement identiques. Identiques ? Pas tout fait ! Au fil des versions de SPIP, doublons sest enrichi de possibilits supplmentaires : - on peut nommer ses doublons, donc en faire coexister plusieurs dans un mme code, - il permet aussi des pirouettes spipiennes avec lanti-doublons ! Utilisation de base : ne pas retrouver des lments dj traits dans la page Un exemple nous est donn dans le squelette sommaire de dist [3]
<BOUCLE_articles_recents(ARTICLES) {par date}{inverse} {0,2} {doublons}> lments afficher, par exemple #TITRE </BOUCLE_articles_recents> <BOUCLE_autres_articles(ARTICLES) {par date}{inverse} {doublons} > lments afficher, par exemple #TITRE </BOUCLE_articles>

Il sagit de lister les articles du site par ordre chronologique invers ET de rserver aux deux derniers articles publis un traitement particulier. Comme vous le voyez, les boucles "_articles_recents" et "_autres_articles" sont construites de la mme manire. En toute logique, elles doivent donc retourner la mme liste darticles. Cest grce au travail du critre "doublons" que les 2 articles les plus rcents, dj traits dans la premire boucle, ne se retrouveront pas dans la liste affich avec la boucle "_autres_articles" . Autre utilisation courante : exclure des lments Notre grand classique : exclure suivant un mot-cl On voit rgulirement sur la liste spip-users pos ce type de problme : "Je narrive pas a exclure des lments en fonction de leur mot-cl. jessaie :
<BOUCLE_rubriques(RUBRIQUES) {racine} {titre_mot!=invisible}{par num titre, titre}>

mais cela ne fonctionne pas" Et pour cause !

Manuel de rfrence des boucles et balises

129/186

Ce que veut lutilisateur ici, cest slectionner toutes les rubriques qui nont pas reu le mot cl "invisible". Or, ce que comprend la base de donnes avec {titre_mot != invisible}, cest quelle doit slectionner toutes les rubriques qui ONT un mot cl ET que le dit mot cl soit diffrent de "invisible". Et cela change tout. Car dans le rsultat figurera par exemple une rubrique laquelle a t affect un mot cl "bidule", donc diffrent de "invisible" (ok !), y compris si la rubrique est lie au mot cl "invisible" (arg !) et, ny figurera pas, une rubrique qui na aucun mot cl (linverse du rsultat souhait !). [4] La solution : enchaner une boucle vide qui slectionne selon le mot-cl et une autre boucle qui retourne les rsultats en utilisant le critre {doublons}. En reprenant notre exemple ci-dessus cela donne :
<BOUCLE_exclure(RUBRIQUES) {racine} {titre_mot=invisible}{doublons}> </BOUCLE_exclure>

Cette boucle slectionne toutes les rubriques qui ont le mot-cl "invisible" , mais elle naffiche rien.
<BOUCLE_rubriques(RUBRIQUES) {racine}{par num titre, titre} {doublons}> {le traitement effectuer ici} </BOUCLE_rubriques>

Cette deuxime boucle va slectionner grce au critre doublons toutes les autres rubriques et leur appliquera le traitement choisi. Nommer les doublons pour en utiliser plusieurs dans le mme fichier Objectif : grer sur une page daccueil laffichage de liens vers des articles et vers des communiqus. La prsentation des deux derniers articles publis et des deux derniers communiqus est diffrente des autres. Pour lexemple, on retrouve ici le mme schma dj vu avec les boucles de la DIST. Il sagit simplement ici de faire cohabiter sans conflit des boucles trs proches. Nommer les doublons vitera que les tris de lune interfrent dans les tris de lautre.
<BOUCLE_communiques_recents(ARTICLES) {!par date}{id_mot=1} {0,2} {doublons com}> lments afficher, par exemple #TITRE </BOUCLE_communiques_recents> <BOUCLE_autres_communiques(ARTICLES) {!par date}{id_mot=1} {doublons com} > lments afficher, par exemple #TITRE </BOUCLE_autres_communiques> <BOUCLE_articles_recents(ARTICLES) {!par date} {0,2} {doublons art}> lments afficher, par exemple #TITRE </BOUCLE_articles_recents> <BOUCLE_autres_articles(ARTICLES) {!par date} {doublons art} > lments afficher, par exemple #TITRE </BOUCLE_articles>

Manuel de rfrence des boucles et balises

130/186

De manire gnrale, nommer ses doublons est une bonne pratique pour viter tout tlescopage actuel mais aussi futur (des squelettes cela voluent). Cest aussi un lment qui donne de la lisibilit votre code. Dans le cadre dune utilisation avance, vous pouvez essayer lutilisation de balises SPIP. Par exemple : {doublons #TITRE} ou mme {doublons #_mabouboucle:TITRE} voire mme {doublons (#_mabouboucle:TITRE|supprimer_numero)}. Utilisation avance : anti-doublons ou comment constituer une pile de donnes traiter Mcanique de lanti-doublons Ici "doublons" va permettre de rassembler le rsultats de plusieurs boucles utilisant diffrents critres et " !doublons" dappliquer cet empilement ditems les traitements souhaits. Le schma dutilisation est celui-ci : On slectionne un premire srie darticles (on naffiche rien)...
<BOUCLE0(ARTICLES){id_mot=2}{doublons A}></BOUCLE0>

...puis une deuxime srie darticles (on naffiche toujours rien)....


<BOUCLE1(ARTICLES){id_auteur=1}{doublons A}></BOUCLE1>

... on trie selon ses besoins et on affiche le tout grce lanti-doublons.


<BOUCLE2(ARTICLES){par date}{!doublons A}>#TITRE<br></BOUCLE2>

Un Exemple danti-doublons Objectif : faire une boucle qui rcupre les articles de toutes les rubriques lexception des rubriques 2 et 3, ET pour ce qui concerne les articles de la rubrique 4, seulement ceux de moins de 60 jours. La solution : il nous faut une premire boucle qui ira chercher tous les articles en excluant ceux des rubriques 2, 3 mais aussi 4...
<BOUCLE0(ARTICLES) {id_rubrique !IN 2,3,4}{doublons tri1}></BOUCLE0>

....puisquil faut ddier cette rubrique une deuxime boucle...


<BOUCLE1(ARTICLES) {id_rubrique=4}{age<60}{doublons tri1}></BOUCLE1>

...et cest dans une dernire boucle que lon affiche grce lanti-doublons les articles slectionns tris avec les critres de son choix.
<BOUCLE2(ARTICLES){par date}{!doublons tri1}>#TITRE<br></BOUCLE2>

P.-S.
Article original : http://www.spip-contrib.net/Le-critere-doublons-sa-mecanique. Publi sur spip.net par Teddy Manuel de rfrence des boucles et balises 131/186

Notes [1] Quelques contributions sur ce site lutilisent : http://www.spip-contrib.net/Comment-exclure-des-articles, http://www.spip-contrib.net/Exclure-selon-un-mot-cle, http://www.spip-contrib.net/Menu-depliant-tout-Spip, http://www.spip-contrib.net/Afficher-les-articles-dans-un, http://www.spip-contrib.net/Afficher-5-vignettes-consecutives [2] Attention, ne pas confondre le critre "unique" et le filtre "unique" dont on peut trouver des applications : ici : http://www.spip-contrib.net/Usage-du-filtre-unique-pour et l : http://www.spip-contrib.net/Utiliser-le-filtre-unique-pour. [3] Il sagit du squelette par dfaut de SPIP que lon trouve dans le dossier /DIST. Rappel : vous ne devez pas toucher ces fichiers et ranger les fichiers de votre propre squelette dans un dossier /squelettes crer au mme niveau que /DIST, cest dire la racine du site. [4] ce point est tir de http://permalink.gmane.org/gmane.comp.web.spip.user/122659 (Merci Cdric)

{fusion champ_sql}
Octobre 2010

Le critre fusion permet de regrouper les rsultats dune boucle SPIP selon les valeurs distinctes dun champ. Si la boucle sans le critre {fusion champ_sql} ramne plusieurs enregistrements ayant la mme valeur de champ_sql, alors, la boucle avec le critre {fusion champ_sql} ne prsentera quun seul de ceux ci. Pour cela, la requte SQL gnre intgre une instruction GROUP BY. Exemple pdagogique La boucle suivante affichera les titres de tous les articles du site :
<BOUCLE_tous(ARTICLES)> #TITRE </BOUCLE_tous>

La boucle suivante, avec un critre fusion portant sur la rubrique, partira galement de tous les articles, mais les regroupera par id_rubrique identique, et ne prsentera au final quun seul article par rubrique.
<BOUCLE_extrait(ARTICLES){fusion id_rubrique}> #TITRE

Manuel de rfrence des boucles et balises

132/186

</BOUCLE_extrait>

Exemples appliqus La boucle suivante affiche les 10 messages de forum les plus rcents, tris par date, et manant dune IP distincte :
<BOUCLE_comment(FORUMS){plat}{par date}{inverse}{0,10}{fusion ip}> <INCLURE{fond=inc/intro_commentaire}{id_forum}> </BOUCLE_comment>

Il est galement possible dutiliser des expressions SQL en paramtre du critre. La boucle suivante affichera la liste des annes pour lesquelles il y a au moins un article :
<BOUCLE_annees_avec_articles(ARTICLES){par date}{inverse}{fusion YEAR(date)}> [(#DATE|annee)] </BOUCLE_annees_avec_articles>

Attention Un critre de tri {par xxx} combin au critre {fusion champ_sql} ne retournera pas forcment les rsultats attendus. - <BOUCLE_a1(ARTICLES){tout}{par id_article}> ramne les articles tris par id_article (du 1 au 10000 par exemple). - <BOUCLE_a2(ARTICLES){par id_article}{fusion id_rubrique}> ramne les articles, tris par id_article aprs regroupement par id_rubrique, mais ces regroupements sont faits en vrac et, a priori, sans tris particuliers !

{id_article}
Dcembre 2008

- {id_article} slectionne larticle dont lidentifiant est id_article. Comme lidentifiant de chaque article est unique, ce critre ne retourne quune ou zro rponse.

{id_auteur}
Dcembre 2008

- {id_auteur} slectionne les articles correspondant cet identifiant dauteur (utile pour indiquer la liste des articles crits par un auteur).

Manuel de rfrence des boucles et balises

133/186

{id_groupe}
Dcembre 2008

- {id_groupe=zzzz} permet de slectionner les articles lis un groupe de mots-cls ; principe identique au {type_mot} prcdent, mais puisque lon travaille avec un identifiant (numro du groupe), la syntaxe sera plus propre . [Nota : Ce critre nest pas (en ltat actuel du dveloppement de SPIP) cumulable avec le prcdent {type_mot=yyyy}]

{id_mot}
Dcembre 2008

- {id_mot} slectionne les articles correspondant cet identifiant de mot-cl (utile pour indiquer la liste des articles traitant dun sujet donn).

{id_rubrique}
Dcembre 2008

- {id_rubrique} slectionne les articles contenus dans la rubrique dont lidentifiant est id_rubrique.

{id_secteur}
Dcembre 2008

- {id_secteur} slectionne les articles dans ce secteur (un secteur est une rubrique qui ne dpend daucune autre rubrique, cest--dire situe la racine du site).

{lang}
Dcembre 2008

- {lang} slectionne les articles de la langue demande dans ladresse de la page.

{origine_traduction}
Manuel de rfrence des boucles et balises 134/186

Dcembre 2008 maj : novembre 2010

- {origine_traduction} slectionne les articles qui servent de base des versions traduites (les articles "originaux"). Voir sur programmer.spip.org pour des exemples

{recherche}
Dcembre 2008 maj : Janvier 2009

- {recherche} slectionne les articles correspondant aux mots indiqus dans linterface de recherche (moteur de recherche incorpor SPIP). Larticle consacr au moteur de recherche et aux balises #DEBUT_SURLIGNE et #FIN_SURLIGNE donne plus dinformations concernant la gestion de laffichage des rsultats.

{titre_mot}, {type_mot}
Dcembre 2008 maj : Fvrier 2009

- {titre_mot=xxxx}, ou {type_mot=yyyy} slectionne respectivement les articles lis au mot-cl dont le nom est xxxx , ou lis des mots-cls du groupe de mots-cls yyyy . Si lon donne plusieurs critres {titre_mot=xxxx} (ou plusieurs {type_mot=yyyy}), on slectionnera ceux qui auront tous ces mots la fois.

{tous}
Octobre 2009

Le critre {tous} est un alias du critre {tout}.

{tout}
Octobre 2009

Le critre {tout} permet de slectionner les donnes dune table comme si aucun autre critre restrictif ntait appliqu. Ainsi son utilisation relve-telle plus de laide-mmoire pour le webmestre puisque lon obtient le mme rsultat en nindiquant aucun critre. Manuel de rfrence des boucles et balises 135/186

<BOUCLE_x(RUBRIQUES) {tout}> o toutes les rubriques sont slectionnes,

cest--dire les rubriques vides en plus des rubriques contenant des lments publis. On rservera ce choix des besoins trs spcifiques ; en effet, par dfaut, SPIP naffiche pas sur le site public les rubriques qui ne contiennent aucun lment actif, afin de garantir que le site ne propose pas de culs de sac (navigation vers des pages ne proposant aucun contenu). = publie) sont slectionns dans toutes les rubriques. Utile notamment pour afficher les articles les plus rcents (dans lintgralit du site) sur la page daccueil. mis la poubelle (statut != 5poubelle) sont slectionns, quils aient crit un article ou non, quils soient administrateur, administrateur restreint, rdacteur, visiteur ou nouvel inscrit.

<BOUCLE_x(ARTICLES) {tout}> o tous les articles publis (statut

<BOUCLE_x(AUTEURS) {tout}> o tous les auteurs sauf ceux

<BOUCLE_x(DOCUMENTS) {tout}> o tous les documents sauf ceux

en mode vignette (mode != vignette) sont slectionns dans lintgralit du site.

<BOUCLE_x(MOTS) {tout}> o tous les mots-clefs sont slectionns dans lintgralit du site. <BOUCLE_x(BREVES) {tout}> o toutes les brves publies (statut = publie) sont slectionnes

dans lintgralit

du site.
<BOUCLE_x(FORUMS) {tout}> o tous les forums publis (statut

= publie) sont slectionns dans lintgralit du site sans prendre en compte leur hirarchie. Avec ce critre, vous pouvez slectionner tous les messages quelle que soit leur position dans un thread (dans la limite des autres critres, bien sr). Cela permet par exemple dafficher les messages par ordre strictement chronologique, ou de compter le nombre total de contributions dans un forum.

Pour faire sauter les dernires restrictions de slection (where statut=publie par exemple) et slectionner vritablement tous les lments dune table, on peut utiliser la notation <BOUCLE_yy(prefixe_table)> o lon prcise en bas de casse le nom exact prfixe compris de la table de recherche (attention : pas de s pour spip_forum). par exemple pour afficher tous les articles quel que soit leur statut (prepa, prop, publie, poubelle, refuse) : <BOUCLE_yy(spip_articles)> Noter que ce critre possde un alias : le critre {tous}.

{traduction}
Dcembre 2008

- {traduction} slectionne les traductions de larticle courant en diffrentes langues.

{vu}
Manuel de rfrence des boucles et balises 136/186

Octobre 2009

le critre {vu = ...} permet de diffrencier les documents qui ont dj t traits par lobjet auquel ils sont rattachs. Le critre vu porte sur une association document<->objet (car un mme document peut tre li plusieurs objets : article, rubrique, etc.). Aussi est-il mis--jour chaque modification du-dit objet. Si le document est intgr dans un objet (typiquement : <imgXX> ou <docYY|left> ou encore <embZZ> dans le texte dun article par exemple), alors cette association document-objet sera note comme vu = oui . Par exemple, pour afficher le portfolio dun article, on peut utiliser, lintrieur dune boucle articles, une boucle documents avec le critre {vu = non} : ainsi, safficheront dans le portfolio uniquement les documents qui nont pas dj t affichs dans le corps de larticle.

Manuel de rfrence des boucles et balises

137/186

Les filtres
LES FILTRES ..................................................................................................................................................... 78 |ABS_URL ......................................................................................................................................................... 140 |AFFDATE ......................................................................................................................................................... 140 |AFFDATE_COURT ............................................................................................................................................ 140 |AFFDATE_JOURCOURT .................................................................................................................................... 140 |AFFDATE_MOIS_ANNEE .................................................................................................................................. 141 |AFFICHER_ENCLOSURES ................................................................................................................................. 141 |AFFICHER_TAGS.............................................................................................................................................. 141 |AGENDA_AFFICHE........................................................................................................................................... 141 |AGENDA_CONNU............................................................................................................................................. 142 |AGENDA_MEMO .............................................................................................................................................. 142 |ALTERNER....................................................................................................................................................... 143 |ANCRE_URL .................................................................................................................................................... 144 |ANNEE ............................................................................................................................................................ 144 |APPLIQUER_FILTRE ......................................................................................................................................... 144 |ATTRIBUT_HTML............................................................................................................................................. 144 |BALISE_IMG .................................................................................................................................................... 145 |CHOIXSIEGAL{VALEUR, SIOUI, SINON} ........................................................................................................... 145 |CHOIXSIVIDE{SIOUI, SINON} ........................................................................................................................... 145 |COMPACTE ...................................................................................................................................................... 145 |CONCAT{VALEUR1, VALEUR2, ...} .................................................................................................................. 146 |COULEUR_* .................................................................................................................................................... 146 |COPIE_LOCALE................................................................................................................................................ 149 |COUPER ........................................................................................................................................................... 150 |DATE_822....................................................................................................................................................... 151 |DATE_RELATIVE ............................................................................................................................................. 151 |DIRECTION_CSS .............................................................................................................................................. 151 |DIV.................................................................................................................................................................. 152 |ENTITES_HTML ............................................................................................................................................... 152 |ENV_TO_PARAMS ........................................................................................................................................... 152 |ET ................................................................................................................................................................... 153 |EXTRAIRE_ATTRIBUT ...................................................................................................................................... 153 |EXTRAIRE_BALISE .......................................................................................................................................... 154 |FICHIER ........................................................................................................................................................... 154 |FIND ................................................................................................................................................................ 155 |FOREACH ........................................................................................................................................................ 155 |FORM_HIDDEN ................................................................................................................................................ 156 |HAUTEUR ........................................................................................................................................................ 156 |HEURES ........................................................................................................................................................... 156 |IMAGE_PASSE_PARTOUT ................................................................................................................................. 156 |INSERER_ATTRIBUT ........................................................................................................................................ 157 |IS_NULL .......................................................................................................................................................... 157 |JOUR ............................................................................................................................................................... 158 |LARGEUR ........................................................................................................................................................ 158 |LIENS_ABSOLUS .............................................................................................................................................. 158 |LIEN_OU_EXPOSE ........................................................................................................................................... 158 |LIENS_OUVRANTS ........................................................................................................................................... 159 |LIGNES_LONGUES ........................................................................................................................................... 159 |MATCH ............................................................................................................................................................ 160 |MINUTES ......................................................................................................................................................... 160 |MODULO ......................................................................................................................................................... 161 |MOINS ............................................................................................................................................................. 161 |MOIS ............................................................................................................................................................... 162 |MULT .............................................................................................................................................................. 162 |NOM_JOUR ...................................................................................................................................................... 162 |NOM_MOIS ...................................................................................................................................................... 162 |NON ................................................................................................................................................................ 163

Manuel de rfrence des boucles et balises

138/186

|OU ................................................................................................................................................................... 163 |OUI.................................................................................................................................................................. 163 |PARAMETRE_URL............................................................................................................................................ 163 |PLUS ............................................................................................................................................................... 164 |PTOBR ........................................................................................................................................................... 164 |PUSH ............................................................................................................................................................... 165 |REPLACE ......................................................................................................................................................... 166 |SAFEHTML ...................................................................................................................................................... 166 |SAISON ............................................................................................................................................................ 167 |SECONDES ....................................................................................................................................................... 167 |SINGULIER_OU_PLURIEL{ XXX:CHAINE_UN, XXX:CHAINE_PLUSIEURS} ......................................................... 167 | ?{SIOUI, SINON}............................................................................................................................................. 168 |SINON.............................................................................................................................................................. 168 |SUPPRIMER_NUMERO ...................................................................................................................................... 169 |SUPPRIMER_TAGS ........................................................................................................................................... 169 |TABLE_VALEUR .............................................................................................................................................. 169 |TAILLE_EN_OCTETS ........................................................................................................................................ 170 |TEXTE_BACKEND ............................................................................................................................................ 170 |TEXTEBRUT ..................................................................................................................................................... 171 |TEXTE_SCRIPT ................................................................................................................................................ 171 |TRADUIRE_NOM_LANGUE ............................................................................................................................... 171 |UNIQUE ........................................................................................................................................................... 172 |URL_ABSOLUE ................................................................................................................................................ 173 |URL_ABSOLUE_CSS......................................................................................................................................... 173 |VIDER_ATTRIBUT ............................................................................................................................................ 174 |XOU ................................................................................................................................................................ 174 |>{A}............................................................................................................................................................... 175 |>={A}............................................................................................................................................................. 175 |<{A}............................................................................................................................................................... 175 |<={A}............................................................................................................................................................. 175 | !={A}............................................................................................................................................................. 176 |=={A}............................................................................................................................................................. 176

Manuel de rfrence des boucles et balises

139/186

|abs_url
Juillet 2009 maj : Novembre 2009

Le filtre |abs_url combine les filtres |liens_absolus et |url_absolue et peut donc sappliquer aussi bien un texte (#TEXTE, #DESCRIPTIF, etc.) qu une balise durl (#URL_ARTICLE, #URL_RUBRIQUE, etc.) et transforme tous les liens en liens absolus (avec lurl complte du site).

|affdate
Juillet 2009

Ce filtre sapplique aux dates - |affdate affiche la date sous forme de texte, par exemple 13 janvier 2001 . [SPIP 1.8] tend la notation de ce filtre. On peut lui passer un paramtre de formatage de la date, correspondant un format spip ( 'saison' , etc.) ou un format de la commande php date ( 'Y-m-d' ). Par exemple :
o o

[(#DATE|affdate{'Y-m'})] affichera numriquement lanne et le mois de la date filtre spars par un tiret, la notation [(#DATE|affdate{'saison'})] est totalement quivalente : [(#DATE|saison)].

- Il existe aussi des variantes de affdate qui fournissent des raccourcis : |affdate_court, |affdate_jourcourt et |affdate_mois_annee.

|affdate_court
Juillet 2009

Ce filtre sapplique aux dates - |affdate_court affiche le nom du mois et le numros du jour, e.g. 19 Avril . Si la date nest pas dans lanne actuelle, alors |affdate_court affichera seulement le mois et lanne sans le numros du jour : Novembre 2004 .
|affdate_court

est une variante du filtre |affdate

|affdate_jourcourt
Juillet 2009

Ce filtre sapplique aux dates

Manuel de rfrence des boucles et balises

140/186

- |affdate_jourcourt affiche le nom du mois et la valeur numrique du jour, e.g. 19 Avril . Si la date nest pas dans lanne actuelle, alors lanne est aussi affiche : 1 Novembre 2004 .
|affdate_jourcourt

est une variante du filtre |affdate

|affdate_mois_annee
Juillet 2009

Ce filtre sapplique aux dates - |affdate_mois_annee affiche seulement le mois et lanne : Avril 2005 , Novembre 2003 .
|affdate_mois_annee

est une variante de |affdate

|afficher_enclosures
Octobre 2009

Dans le cadre dune syndication, le filtre |afficher_enclosures appliqu la balise #TAGS affichera licone du trombone pour les documents joints de larticle syndiqu (plutt quun lien classqiue).
[(#TAGS|afficher_enclosures)]

Voir aussi les informations dtailles sur la page de la balise #TAGS

|afficher_tags
Octobre 2009

Dans le cadre dune syndication, le filtre |afficher_tags appliqu la balise #TAGS affichera pour larticle syndiqu au choix : les tags/mots-cls : [(#TAGS|afficher_tags{tag})], la rubrique/catgorie : [(#TAGS|afficher_tags{directory})], les documents joints/podcast : [(#TAGS|afficher_tags{enclosure})]. (Par dfaut [(#TAGS|afficher_tags)] est quivalent [(#TAGS|afficher_tags{'tag, directory'})].) Plus dinformations dtailles sur la page de la balise #TAGS

|agenda_affiche
Juillet 2009

- Le filtre agenda_affiche sapplique sur une balise retournant le nombre dlments afficher (en gnral #TOTAL_BOUCLE) et prend trois paramtres :

Manuel de rfrence des boucles et balises

141/186

1. un texte qui sera affich si la balise filtre ne retourne rien (0 lment afficher) ; 2. un type de calendrier (jour, semaine, mois ou periode) ; 3. des noms de classes CSS utilises dans lappel du filtre prcdent qui permettent de filtrer les lments afficher. Si la balise filtre est nulle, ce filtre retourne son premier argument. Sinon il retourne les lments mmoriss par le filtre agenda_memo mis en page dans un calendrier du type demand. Seul les lments indexs par agenda_memo avec une des classes CSS indiques dans le dernier argument seront affichs (ou alors tous les lments si ce paramtre est omis). Ainsi on peut filtrer les lments pour les rpartir dans plusieurs calendriers sur la mme page. Le type periode restreindra laffichage la priode comprise entre le plus vieil lment et le plus rcent effectivement trouvs, ce qui permet de donner dans le critre une priode trs large sans rcuprer un affichage trop long. Exemple :
<BOUCLE_memorise(ARTICLES) {agenda date, semaine}{par date}>[ (#DATE|agenda_memo{#DESCRIPTIF,#TITRE,#URL_ARTICLE}) ]</BOUCLE_memorise> [(#TOTAL_BOUCLE|agenda_affiche{<:aucun_article:>,semaine})] <//B_memorise>

affiche les articles publis dans la semaine actuelle sous forme de calendrier.

|agenda_connu
juillet 2010

Le filtre |agenda_connu teste si son argument est lun des quatre types de calendriers connus (jour, semaine, mois ou periode). Ce filtre est utilis par les squelettes agenda_jour.html, agenda_semaine.html, agenda_mois.html et agenda_periode.html, appels partir du squelette agenda.html qui indique dans son en-tte les feuilles de style et fonctions javascript ncessaires (mais remplaables volont). Ces squelettes fournissent donc un exemple reprsentatif dutilisation.

|agenda_memo

Manuel de rfrence des boucles et balises

142/186

juillet 2010

Le filtre |agenda_memo sapplique sur une balise #DATE_MODIF) et prend quatre paramtres :

de date (par exemple #DATE ou

1. un descriptif 2. un titre 3. une URL reprsentant llment ayant ce titre et ce descriptif (par exemple #URL_ARTICLE) 4. un nom de classe CSS Si la balise sur laquelle agenda_memo sapplique nest pas nulle, il se contente de mmoriser la date et les trois premiers arguments dans un tableau index par le dernier argument (le nom de classe CSS) et ne retourne rien (aucun affichage). Lutilisation du dernier argument comme index pour llment mmoriser permet davoir plusieurs calendriers par page. De plus, la classe spcifie ici sera attribue cet lment dans laffichage en calendrier fourni par agenda_affiche. Ainsi, on peut donner des styles diffrents aux lments. La feuille calendrier.css fournit 28 styles diffrents qui donnent un exemple de diffrents styles de calendrier.

|alterner
Octobre 2009

Le filtre |alterner{a, b, c, ...} appliqu une balise numrique (le plus souvent #COMPTEUR_BOUCLE) lintrieur dune boucle affiche tour de rle et dans lordre chacun de ses arguments chaque changement de valeur de la balise. Par exemple, [(#COMPTEUR_BOUCLE|alterner{white, yellow})] affichera white la premire itration de la boucle, yellow la deuxime, white la troisime, yellow la quatrime, etc. Ainsi, on peut faire une liste darticle qui utilise une couleur diffrente pour les lignes paires et impaires :
<B_lesarticles> <ul> <BOUCLE_lesarticles(ARTICLES) {par titre}> <li style="background: [(#COMPTEUR_BOUCLE|alterner{white, yellow})];">#TITRE</li> </BOUCLE_lesarticles> </ul> </B_lesarticles>

Ce filtre nest pas binaire : il est possible de lui faire afficher une donne tous les x changements de valeur ; la boucle suivante affichera les titres darticle par bloc de 4 en changeant de couleur chaque bloc :
<BOUCLE_lesarticles(ARTICLES) {par titre}> [(#COMPTEUR_BOUCLE|alterner{<p style="color:red;">, '', '', '', <p style="color:green;">, '', '', ''})] #TITRE<br> [(#COMPTEUR_BOUCLE|alterner{'', '', '', </p>})] </BOUCLE_lesarticles> [(#TOTAL_BOUCLE|modulo{4}|=={0}|non)</p>] </B_lesarticles>

Manuel de rfrence des boucles et balises

143/186

|ancre_url
avril 2010

Le filtre |ancre_url{intitul} ajoute une ancre lurl sur laquelle il est appliqu (ou modifie lancre dj existante attache cette url). Exemple [(#URL_ARTICLE|ancre_url{le_paragraphe})] produira lurl de larticle suffixe de #le_paragraphe.

|annee
Juillet 2009 maj : Septembre 2009

Le filtre |annee affiche numriquement, sur 4 chiffres, lanne de la date sur laquelle il sapplique.
[(#DATE|annee)]

|appliquer_filtre
juillet 2010

Pour utiliser un filtre qui est dfini dans un plugin, quand on est pas certain que le plugin est install et activ, il ne faut pas, depuis SPIP 2.1 appeler directement le filtre ( [(#BALISE|fonction_specifique)] ), car cela gnrerait une erreur de compilation, mais passer par un appel appliquer_filtre :
[(#BALISE|appliquer_filtre{fonction_specifique})]

Les paramtres passer au filtre fonction_specifique sont passs en paramtre supplmentaires :


[(#BALISE|appliquer_filtre{fonction_specifique, param1, param2})]

|attribut_html
Octobre 2009

Le filtre |attribut_html appliqu une balise de texte traduira le rendu html de celle-ci dans un format utilisable sans dommage dans un attribut html (alt="...", title="...", value="..."). Par exemple, partir dune balise #DESCRIPTIF qui retourne normalement le source html suivant : 2 est "suprieur" 1 & c'est not : 2 > 1, pour renseigner lattribut alt dune image on utilisera :
<img alt="[(#DESCRIPTIF|attribut_html)]"...

qui retournera le source html : <img alt="2 est &quot;sup&#233;rieur&quot; &#224; 1 &#38; c&#39;est not&#233; : 2 &gt; 1"...

Manuel de rfrence des boucles et balises

144/186

Noter que ce filtre supprime les tags html : <strong>bonjour</strong> l't ! devenant : bonjour l&#39;&#233;t&#233; !

|balise_img
avril 2010

Le filtre |balise_img gnre un tag image complet (<img src="...) partir du nom de fichier auquel il est appliqu. Il est possible de passer une valeur pour un alt et une class ventuels en fournissant ces deux arguments au filtre : |balise_img{val_alt, val_class}. Exemple :
[(#CHEMIN{monimage.png}|balise_img{paysage, spip_doc})]

produira le tag :
<img src='le_rep/monimage.png' width='180' height='56" alt='paysage' class='spip_doc' />.

|choixsiegal{valeur, sioui, sinon}


Juillet 2009 |choixsiegal{valeur, sioui, sinon}

affichera "sioui" si la valeur de la balise est gale "valeur" ou "sinon" si ce nest pas gale la valeur souhaite. Exemple :

<BOUCLE_blog(ARTICLES) {par date} {inverse} {"<br />"}> [<hr /><h1>(#ID_ARTICLE|choixsiegal{10, "IMPORTANT", ""})</h1>] #TITRE ... </BOUCLE_blog>

affichera le mot "IMPORTANT" si lID_ARTICLE est gal "10" ou rien sil nest pas gal "10".

|choixsivide{sioui, sinon}
Aot 2009

Le filtre |choixsivide{sioui, sinon} est quivalent au filtre |?{sioui, sinon}. Il prend un ou deux paramtres : - sioui est la valeur afficher la place de llment filtr si celui-ci est vide. - sinon est la valeur afficher si llment filtr est non vide.
[(#TEXTE|choixsivide{"pas de texte", #TEXTE})] affiche pas de texte si le champ #TEXTE na pas t rempli dans la partie prive ; affiche le contenu de #TEXTE sil a t

renseign.

|compacte

Manuel de rfrence des boucles et balises

145/186

Octobre 2009

Le filtre |compacte appliqu un fichier css ou javascript [1] en cre une copie compacte, de taille rduite, o ont t supprims les commentaires, les dclarations vides, les espaces superflus etc. [2] (pour les fichiers de script Javascript, le filtre utilise la classe JavaScriptPacker). Aprs avoir archiv ce nouveau fichier dans le rpertoire local/ le filtre en retourne le lien[<link rel="stylesheet" href="(#CHEMIN{spip_style.css}|compacte)" type="text/css" media="all" />] retournera quelque chose comme : <link
rel="stylesheet" href="local/cache-css/spip_style-compacte-092e.css" type="text/css" media="all" />

Notes [1] Le fichier auquel sapplique le filtre doit avoir .js ou .css comme extension. [2] pour les fichiers de css, le filtre transforme toutes les url contenues en url absolues
#div { background : url(../prive/images/fond-gris-anim.gif); modifiable **/ width : 48px; height : 48px; margin : auto; } /** image

devenant
#div{background:url(http://www.domaine.tld/prive/images/fond-grisanim.gif);width:48px;height:48px;margin:auto;}

|concat{valeur1, valeur2, ...}


Juillet 2009 |concat{valeur1,valeur2,...}

permet de concatner plusieurs chanes.

|couleur_*
11 juin 2010

On pourra consulter larticle Couleurs automatiques de la prsente documentation.

|couleur_extraire
Le filtre ||couleur_extraire appliqu une balise image (logo, image typo...) retourne la valeur RVB hexadcimale dune couleur prsente dans limage. Fonctionnement :

Manuel de rfrence des boucles et balises

146/186

Le filtre commence par redimensionner limage originale en un carr de 20 pixels par 20 pixels, pour que la couleur extraite soit reprsentative des couleurs rellement prsentes dans limage (en vitant de tomber sur un pixel isol). Puis il retourne la valeur de la couleur du pixel situ lgrement au dessus du centre de limage (par dfaut : coordonnes 10, 6). Il est possible de forcer la slection dun pixel particulier, cest dire de prciser au filtre dans quelle partie de limage originale il doit slectionner sa couleur moyenne. Pour cela on passera au filtre les coordonnes du pixel sous la forme ||couleur_extraire{x, y} o x,y devront se situer dans une fourchette de 0,0 (coin suprieur gauche) 20,20 (coin infrieur droit). Exemple : partir de limage originale ci-dessous :

le filtre cre une image temporaire rduite :

Manuel de rfrence des boucles et balises

147/186

agrandie ici :

puis slectionne le pixel spcifi (ci-dessous, respectivement : 0, 0 ; 10, 6 ; 10, 10 ; 20, 20 ) :

Enfin, le filtre retournera la valeur colorimtrique de ce pixel. Dans cet exemple : 554839 pour ||couleur_extraire{0, 0} ; aa8454 pour ||couleur_extraire (par dfaut) ; 995c2c pour ||couleur_extraire{10, 10} ; 544738 pour ||couleur_extraire{20, 20}. Attention : le filtre retourne la valeur brute de la couleur ; pour lutiliser dans un style css, ne pas oublier de faire prcder cette valeur dun #.

|couleur_eclaircir et |couleur_foncer

Manuel de rfrence des boucles et balises

148/186

Associs au filtre |couleur_extraire, les filtres |couleur_eclaircir ou |couleur_foncer permettent dobtenir des dclinaisons (camaeux) de couleurs, lensemble tant trs cohrent. partir de la couleur extraite dune image (imaginons par exemple le logo dune rubrique) :

les 3 codes suivants :


[(#LOGO_RUBRIQUE||couleur_extraire)] [(#LOGO_RUBRIQUE||couleur_extraire|couleur_eclaircir)] [(#LOGO_RUBRIQUE||couleur_extraire|couleur_foncer)]

retourneront :

Palette

|copie_locale
avril 2010

Le filtre |copie_locale cre une copie locale dun fichier distant (image, texte, pdf, html,...) provenant dun autre domaine. Appliqu une URL, ce filtre tente de copier le fichier sur lequel pointe cette url puis, si lopration a aboutie, retourne lurl relative de la copie locale du ficher (par exemple IMG/distant/jpg/l_image.jpg ). Si lopration de copie a choue, le filtre ne retourne rien. LURL du fichier que lon veut copier en local peut - soit tre indique explicitement :

Manuel de rfrence des boucles et balises

149/186

[(#VAL{url_du_fichier_distant}|copie_locale)]

- soit provenir dune table externe :


[(#URL_FICHIER_DISTANT|copie_locale)] ; - soit provenir dune balise enclosure dun flux rss syndiqu : [(#TAGS|afficher_tags{enclosure}|extraire_attribut{href}|copie_locale)].

Mise jour de la copie Le filtre accepte un argument optionnel : |copie_locale{mode} qui peut prendre 4 valeurs. - auto (par dfaut) : dans ce cas une copie en local du fichier distant est ralise dans IMG/distant/. Cette copie nest effectue quune fois. Elle nest pas remise jour au recalcul de la page si le fichier distant a t mis jour et si son URL est reste identique. - force : la copie locale est ralise chaque recalcul de la page. Le fichier local peut donc ventuellement tre mis jour. ( utiliser avec prcautions, cette fonction tant consommatrice de ressources). - modif : la copie locale dj prsente ne sera mise jour que si elle est antrieure lentte IfModified-Since du fichier original. - test : le filtre ne fait que vrifier quil existe bien dj une copie en local du fichier donn en URL et retourne alors lurl de cette copie. Sinon, il ne fait ni ne retourne rien. Note : Pour appliquer un filtre image sur un fichier distant, il est indispensable de lui appliquer prcdemment le filtre |copie_locale. Exemple :
[(#VAL{http://www.spipcontrib.net/IMG/siteon0.png}|copie_locale|image_reduire{100})]

|couper
Septembre 2009

Le filtre |couper coupe un texte aprs un nombre de caractres paramtrable. Il essaie de ne pas couper les mots et enlve le formatage du texte. Si le texte original est plus long que lextrait coup, alors (...) est ajout la fin de lextrait. Le filtre coupe par dfaut 50 caractres, mais on peut spcifier une autre longueur en la passant comme paramtre au filtre, par exemple : [(#TEXTE|couper{80})]. De plus, ce filtre nettoie le texte de toutes ses balises html (ou formatage de texte) : il ny a plus de liens, de gras, de code, de cadre, etc. Nous avons, donc, un texte brut. Il est possible de personnaliser les points de suite de ce filtre de la manire suivante :
[(#TEXTE|couper{80, '...'})] [(#TEXTE|couper{80, '&nbsp;<img src="truc.png" alt="">'})]

Noter aussi quil est frquent que la coupe ne corresponde pas exactement au nombre demand de caractres (les mots ntant pas coups).

Manuel de rfrence des boucles et balises

150/186

|date_822
Septembre 2009

Le filtre |date_822 formate une balise de type date (#DATE, #DATE_REDAC, etc.) selon le standard RFC 822 (utilis pour <pubdate> dans certains flux RSS 2.0 notamment photocast). Exemple : la date 2008-10-03 08:22:00 sera affiche Fri, 03 Oct 2008 08:22:00 +0200

|date_relative
juillet 2010

Le filtre |date_relative appliqu toute balise #DATE... affichera une information lie la balise selon la date du contexte. Exemple : nous sommes le vendredi 25 septembre 2009 14h20. Un article a t publi le mercredi 23 septembre 2009 10h20.
[(#DATE|date_relative)]

donnera : Il y a 2 jours et 4 heures. A linverse, si votre site affiche les articles quelque soit leur date de publication, un article publi le dimanche 27 septembre 2009 18h20 affichera ceci : Dans 2 jours et 4 heures.

|direction_css
Octobre 2009

Le filtre |direction_css appliqu un fichier css (feuille de styles) y remplace toutes les occurrences de left par right et de right par left [1]. En fonction de la langue de lenvironnement [2] le filtre permet donc d inverser les rgles de placement dun fichier CSS. Ce filtre commence par chercher un ventuel fichier (invers) existant et, sil ne le trouve pas, le cre dans le rpertoire local/cache-css/ Si le fichier de styles inclu dautres fichiers de styles placs sur le mme domaine (host) (rgle @import url dans le fichier), le filtre propage ses modifications aux fichiers concerns.

Notes
[1] Attention : le filtre ne traite pas (ne modifie pas) les rgles du type : #div { margin: 10px 15px 10px 50px; } ; il vous faut donc prciser dans votre fichier de styles original : Manuel de rfrence des boucles et balises 151/186

#div { margin-top: 10px; margin-left: 15px; margin-bottom: 10px; marginright: 50px; } pour que les inversions puissent y tre appliques.

[2] Il est possible de passer un argument au filtre pour forcer une direction dcriture voulue : |direction_css{rtl} ou |direction_css{ltr}.

|div
Septembre 2009

Le filtre |div{xx} est un filtre doprations mathmatiques. Il retourne le rsultat de la division (le quotient) de la valeur de la balise par xx. Si le retour de la balise nest pas de type numrique, il est considr comme 0 (zro) et le filtre retourne 0 (zro) : [(#TEXTE|div{18})] retournera 0 . Il est possible de donner un nombre ngatif comme argument du filtre :
[(#TOTAL_BOUCLE|div{-5.2})].

Attention, si xx est un nombre virgule, sa notation doit utiliser le point en lieu et place de la virgule : [(#TOTAL_BOUCLE|div{5.2})].

|entites_html
Novembre 2009

Le filtre |entites_html appliqu une balise de texte traduira le rendu html de celle-ci en transformant en entites html les caractres en dehors du charset de la page ainsi que les ", < et >. Ceci permet dinsrer le texte dune balise dans un <textarea> </textarea> sans dommages. Par exemple, partir dune balise #DESCRIPTIF qui retourne normalement le source html suivant : 2 est "suprieur" 1 & c'est not : 2 > 1,
<textarea>[(#DESCRIPTIF|entites_html)]</textarea>

retournera le source html :


<textarea>2 est &quot;suprieur&quot; 1 &amp; c'est not : 2 &gt; 1</textarea>

|env_to_params
Octobre 2009

Rcupre les paramtres passs un modle audio ou vido et en cre les correspondances pour le tag html <object>. Utilis dans un squelette de modle, dans une boucle DOCUMENTS et lintrieur dun tag html <object>, ce filtre, spcifiquement appliqu la balise ENV :

Manuel de rfrence des boucles et balises

152/186

[(#ENV*|env_to_params)], rcupre les paramtres passs au modle (<emb54|center|autoplay=true|loop=false>) et cre pour chacun deux <param value="..." name="..." /> correspondant.

le tag html

Exemple : alors quun simple appel de modle <video386> produira par dfaut :
<param <param <param <param value="IMG/mov/mon_film.mov" name="movie"/> value="IMG/mov/mon_film.mov" name="src"/> value="386" name="id_video"/> value="" name="class"/>

un appel plus argument


<video386 |center |border=6 |autostart=false |autoload=false |loop=3 |controls=true>

produira :
<param <param <param <param <param <param <param <param <param <param value="IMG/mov/mon_film.mov" name="movie"/> value="IMG/mov/mon_film.mov" name="src"/> value="386" name="id_video"/> value="" name="class"/> value="center" name="center"/> value="6" name="border"/> value="false" name="autostart"/> value="false" name="autoload"/> value="3" name="loop"/> value="true" name="controls"/>

|et
Mars 2010

Le filtre |et (peut aussi tre crit |and) permet de vrifier la prsence de 2 lments. exemples :
# [(#CHAPO|et{#PS}) Il y a un chapo et un post-scriptum ] # [(#CHAPO|et{#PS}|non) Il n'y a pas la fois un chapo et un post-scriptum ]

voir aussi les filtres |ou et |xou

|extraire_attribut
Octobre 2009

Le filtre |extraire_attribut{nom_attribut} permet de rcuprer lattribut prcis dun tag html. Manuel de rfrence des boucles et balises 153/186

Par exemple : si la balise #LOGO_SITE_SPIP gnre le code html <img width="353" height="120"
style="height: 120px; width: 353px;" class="spip_logos" alt="SPIP" src="local/cache-vignettes/L353xH120/siteon0-1de24.jpg"/>,

alors :
[(#LOGO_SITE_SPIP||extraire_attribut{src})] retournera local/cachevignettes/L353xH120/siteon0-1de24.jpg [(#LOGO_SITE_SPIP||extraire_attribut{width})] retournera 353 [(#LOGO_SITE_SPIP||extraire_attribut{style})] retournera height: 120px; width: 353px;

|extraire_balise
Octobre 2009

Le filtre |extraire_balise{nom_tag} permet de rcuprer le premier tag html de nom nom_tag rencontr dans le source html gnr par la balise laquelle il est appliqu. Exemple : Nous syndiquons un photoblog qui diffuse systmatiquement un petit commentaire suivi dune photographie. Cette dernire se prsente sous la forme dune balise HTML <img src="... />. Une fois ce photoblog syndiqu dans notre site, nous pouvons dcider de nafficher que la photo, sans le commentaire : [(#DESCRIPTIF|extraire_balise{img})] partir de l tout est possible :

afficher lurl de limage :


[(#DESCRIPTIF|extraire_balise{img}|extraire_attribut{src})]

afficher la largeur de limage :


[(#DESCRIPTIF|extraire_balise{img}|extraire_attribut{width})]

affecter un style particlulier limage :


[(#DESCRIPTIF|extraire_balise{img}|inserer_attribut{style, border: double red 4px})]

|fichier
Septembre 2009 maj : 20 aot

Le filtre |fichier ne peut sappliquer qu une balise #LOGO. Il retourne le chemin daccs (le path) vers le fichier correspondant au logo associ au document. exemples : [(#LOGO_DOCUMENT|fichier)] peut retourner prive/vignettes/pdf.png (cas dune vignette standard de SPIP), ou bien local/cachevignettes/L112xH54/mon_fichier.png (cas dune vignette personnalise), ou encore png/image_1.png (pas de vignette). Attention : bien quil sapplique une balise #LOGO ce filtre ne doit pas tre utilis avec un double pipe (||fichier ne fonctionnera pas) ; ne pas confondre ce filtre avec la balise homonyme #FICHIER.

Manuel de rfrence des boucles et balises

154/186

volution : Ce filtre devient obsolte partir de SPIP 2.1 et on utilisera en remplacement : #LOGO_DOCUMENT**.

|find
Dcembre 2009

Le filtre |find appliqu un tableau vrifie la prsence dune valeur dans le tableau Le filtre |find permet de vrifier la prsence dune valeur dans le tableau auquel il est appliqu :
[(#GET{mon_tableau}|find{la_valeur}|oui) Ceci s'affiche si la valeur la_valeur est bien prsente dans le tableau mon_tableau.]

Si #GET{mon_tableau} nest pas un tableau (array au sens PHP), la balise filtre par |find ne retourne rien.

|foreach
Avril 2010

Le filtre |foreach utilise le modle squelettes-dist/modeles/foreach.html pour afficher de faon prsentable les couples clef=> valeur du tableau auquel il est appliqu. - Pour #SET{tablo, #ARRAY{0,a,1,b,2,c,3,d}}, [(#GET{tablo}|foreach)] retourne :

0=> a 1=> b 2=> c 3=> d

- Pour &tab[]=aa&tab[]=bb&tab[]=cc&tab[]=dd pass dans lURL, [(#ENV{tab}|foreach)] retourne :


0=> aa 1=> bb 2=> cc 3=> dd

- Si la balise laquelle est applique le filtre |foreach est un tableau linaris (voir les fonctions PHP), il est indispensable de lui appliquer le filtre |unserialize aprs lavoir toile pralablement : par exemple : [(#ENV*|unserialize|foreach)]. - On peut forcer lutilisation dun modle autre que foreach.html en appelant : o mon_modele.html est le modle personnalis utiliser et que lon aura pris soin de placer dans squelettes/modeles/. - Exemple : afficher la liste des noms des plugins actifs utiliss sur le site

[(#GET{tablo}|foreach{mon_modele})]

Manuel de rfrence des boucles et balises

155/186

Le fichier de modle modeles/liste_plug.html contiendra :


[<li>(#ENV{valeur}|strtolower)</li>]

et sera appel par :


[<ul>(#PLUGIN*|unserialize|foreach{liste_plug})</ul>]

|form_hidden
juillet 2010

Si on fait un formulaire qui utilise comme action un lien comprenant des arguments (par exemple, quand on utilise la balise #SELF avec le type durl par dfaut), il faut remettre ces valeurs dans des champs hidden ; cette fonction calcule les champs en question. utiliser par exemple comme suit :
<form action="#SELF"> [(#SELF|form_hidden)] ... </form>

|hauteur
Septembre 2009

Le filtre |hauteur appliqu un lment image (balise LOGO, image typographique, ...) retourne la hauteur calcule de cet lment une fois filtr. La hauteur retourne est exprime en pixels. Exemple : aprs avoir appliqu le filtre |image_reduire{250, 500} un logo, pour connatre la hauteur relle de limage obtenue, on crira [(#LOGO_DOCUMENT||image_reduire{250,500}|hauteur)].

|heures
Septembre 2009

Le filtre |heures affiche [(#DATE|heures)]

lheure de la date sur laquelle il sapplique.

Lheure retourne varie de 00 24. Si la date sur laquelle est applique le filtre ne contient pas dinformation horaire ([(#VAL{2009-10-24}|heures)]), le filtre retournera 0 (zro).

|image_passe_partout
juillet 2010

Alors que image_reduire produit la plus petite image tenant dans un rectangle, image_passe_partout produit la plus grande image qui remplit ce rectangle

Manuel de rfrence des boucles et balises

156/186

Suivi dun image_recadre avec les mmes dimensions il permet de produire des vignettes de dimensions imposes, sans dformation Exemple
[(#FICHIER |image_passe_partout{70,70} |image_recadre{70,70,center} |image_aplatir{jpg,ffffff} |inserer_attribut{class,spip_logos})]

|inserer_attribut
Octobre 2009

Le filtre |inserer_attribut{attribut, valeur} permet de modifier ou ajouter un attribut html dans un tag html gnr par la balise laquelle il est appliqu. Par exemple :
[(#LOGO_DOCUMENT||inserer_attribut{alt, #TITRE|attribut_html})]

modifie lattribut alt du tag html img gnr par la balise #LOGO_DOCUMENT en lui affectant comme valeur le titre du document. Il est aussi possible de vider un attribut en lui passant une valeur vide :

[(#DESCRIPTIF|inserer_attribut{class, ''})]

Notes : Le filtre nintervient que sur la premire occurrence rencontre de attribut ; si aucune occurrence nest releve, alors il sapplique sur le premier tag rencontr. ainsi [(#TEXTE|inserer_attribut{class, perso})] modifiera le premier attribut class rencontr dans #TEXTE et seulement celui-ci ou bien, si aucun attribut class nest prsent dans #TEXTE, crera un class="perso" dans le premier tag html prsent dans #TEXTE (par dfaut, dans le <p> ouvrant).

|is_null
novembre

2010

Une fonction PHP utilise comme filtre et qui sapplique la balise #ENV. Elle permet de tester lexistence ou non dune variable dans lenvironnement SPIP.

Il est parfois ncessaire de diffrencier une variable de contenu vide dune variable inexistante . Ce filtre est l pour vous y aider. Il sapplique la balise #ENV{blabla} et permet donc de tester lexistence ou non de la variable "blabla" dans lenvironnement du squelette.
[(#ENV{blabla}|is_null)]

Ce code retourne "1" si la variable "blabla" est nulle (inexistante) ou rien si elle est non nulle (prsente). Attention : ne pas confondre variable nulle , cest dire inexistante, et variable vide , cest dire prsente dans lenvironnement mais sans valeur affecte.

Manuel de rfrence des boucles et balises

157/186

Ce filtre ne sapplique pas aux variables dclares avec #SET dont la valeur nest pas prsente dans lenvironnement mais uniquement dans le squelette.

|jour
Septembre 2009

Le filtre |jour affiche numriquement [(#DATE|jour)] Laffichage retourn varie de 1 31.

le jour de la date sur laquelle il sapplique.

|largeur
Septembre 2009

Le filtre |largeur appliqu un lment image (balise LOGO, image typographique, ...) retourne la largeur calcule de cet lment une fois filtr. La largeur retourne est exprime en pixels. Exemple : aprs avoir appliqu le filtre |image_reduire{500} un logo, pour connatre la largeur relle de limage obtenue, on crira [(#LOGO_DOCUMENT||image_reduire{500}|largeur)].

|liens_absolus
Juillet 2009 maj : Novembre 2009

Le filtre |liens_absolus sapplique sur une balise de texte (#TEXTE, #DESCRIPTIF, etc.) et transforme tous les liens que celui-ci contient (<a href=..., <link href:..., <img src=... et <script src=...) en liens absolus (avec lurl complte du site). exemple :
<img src="local/cache-vignettes/L500xH333/belle_image.jpg"..

sera traduit en
<img src="http://le_site.fr/local/cachevignettes/L500xH333/belle_image.jpg"...

ou encore
<a href="spip.php?page=article&amp;id_article=25"...

donnera
<a href="http://le_site.fr/spip.php?page=article&amp;id_article=25"...

- Ce filtre est particulirement utile dans des squelettes de fil rss par exemple.

|lien_ou_expose
16 avril

Le filtre |lien_ou_expose retourne soit un lien cliquable soit un simple intitul.

Manuel de rfrence des boucles et balises

158/186

Appliqu une URL, le filtre |lien_ou_expose{intitul, condition} affiche en fonction du rsultat de la condition soit le lien cliquable vers cette url, soit seulement lintitul pass en argument. Exemple :
[(#URL_RUBRIQUE|lien_ou_expose{#TITRE, #ENV{test}|=={en_cours}})]

affichera sil existe une variable de nom test et de valeur en_cours dans lenvironnement : Titre_de_la_rubrique affichera sinon : Titre_de_la_rubrique Le filtre accepte aussi 3 arguments supplmentaires optionnels class , title et rel
[(#URL_RUBRIQUE|lien_ou_expose{#TITRE, #ENV{test}|=={en_cours}, spip_lien, la super rubrique, biblioentry})]

produisant alors soit le souce html suivant (en fonction de la condition) :


<a href='-Titre_de_la_rubrique-.html' class='spip_lien' title='la super rubrique' rel='biblioentry'>Titre_de_la_rubrique</a>

soit :
<strong class='on'>Titre_de_la_rubrique</strong>

|liens_ouvrants
Octobre 2009

Le filtre |liens_ouvrants, appliqu sur une balise de texte, transforme les liens SPIP qui mnent vers des sites extrieurs pour quils souvrent dans une nouvelle fentre ou onglet ( popup ) ; cest lquivalent du target="_blank" du HTML (lire aussi : Des liens qui ouvrent une nouvelle fentre).

|lignes_longues
Octobre 2009

Le filtre |lignes_longues, introduit des csures dans les mots trops longs en y insrant des espaces scables qui permettent alors le passage la ligne (utile, par exemple, pour afficher des urls dans une colonne troite). Ainsi, si le #TEXTE dun article contient un lien comme :
<a href="http://www.spip.net/spip.php?page=recherche&recherche=lignes_longues" >http://www.spip.net/spip.php?page=recherche&recherche=lignes_longues</a>

alors

Manuel de rfrence des boucles et balises

159/186

<p style="width:30px;"> [(#TEXTE|lignes_longues{20})] </p>

affichera
http://www.spip.net /spip. php?page=recherche& recherche=lignes_longues

Noter que la csure conserve les tag html ; dans lexemple ci-dessus, tout le lien est cliquable comme on peut le voir dans le source html. Ce filtre coupe par dfaut 70 caractres, mais on peut spcifier une autre longueur en passant un paramtre au filtre, par exemple : [(#TEXTE|lignes_longues{40})].

|match
Septembre 2009 maj : 23 octobre

Le filtre |match utilise une expression rationnelle (ne pas hsiter consulter la page wikipedia ddie : Expression_rationnelle) pour afficher un motif prsent dans la balise, ou rien si absent. Par exemple : rcuprer le premier mot du titre [(#TITRE|match{^\w+?})] ; afficher "toto" si prsent dans le titre : [(#TITRE|match{toto})] Il est possible de passer 3 arguments ce filtre : le motif (ou pattern ) : ex. ^a trouver$ ; les options (ou modificateurs) : ex. Uims ; le numro de parenthse capturante (par dfaut lintgralit du motif). Mais il est aussi permis de ne passer que 2 arguments : le motif et le numro de parenthse capturante (ex. #BALISE|match{toto_(\d+)$, 1} qui ne retournera que le ou les chiffres finaux qui sont directement prcds par le mot toto_). Attention : Sil nest pas possible de dclarer une classe de caractres comme argument du filtre : |match{[a-zA-Z]+} produira une erreur de compilation due laprsence des crochets [ et ], il est nanmoins possible dcrire des regexp complexes utilisant les classes de caractres en les dfinissant pralablement :
#SET{ma_regexp, ^[[:space:]]*([0-9]+)([.)]|?)[[:space:]]+} [(#DESCRIPTIF|match{#GET{ma_regexp, Uims, 1}})]

|minutes
Septembre 2009

Manuel de rfrence des boucles et balises

160/186

Le filtre |minutes affiche les minutes de la date sur laquelle il sapplique.


[(#DATE|minutes)]

Laffichage retourn varie de 00 59. Si la date sur laquelle est applique le filtre ne contient pas dinformation horaire ([(#VAL{2009-10-24}|minutes)]), le filtre retournera 0 (zro).

|modulo
Septembre 2009 maj : avril 2010

Le filtre |modulo{xx} est un filtre doprations mathmatiques. Il retourne le reste de la division de la valeur de la balise par xx. Si le retour de la balise nest pas de type numrique, il est considr comme 0 (zro) et le filtre retourne 0 (zro). Ce filtre accepte un deuxime argument qui doit tre numrique (nombre entier ou nombre virgule) et qui sera ajout au rsultat :[(#VAL{20}|modulo{3, 2.4})] retournera 4.4 . Exemple : pour faire varier un affichage dans une boucle chaque tour de boucle : [(#COMPTEUR_BOUCLE|modulo{3})] affichera 0 pour le premier rsultat retourn par la boucle, puis 1 pour le second rsultat, 2 pour le troisime, puis reviendra 0 pour le quatrime, 1 pour le cinquime...
|modulo{x}

retourne donc toujours un entier compris entre 0 et son premier argument x

moins 1. Attention : si 0 (zro) est pass comme argument du filtre ([(#VAL{20}|modulo{0})] par exemple) un warning php Warning : Division by zero sera mis.

|moins
Septembre 2009

Le filtre |moins{xx} est un filtre doprations mathmatiques. Il retourne le rsultat de la soustraction (la diffrence) de xx la valeur de la balise. Si le retour de la balise nest pas de type numrique, il est considr comme 0 (zro) et le filtre retourne loppos de la valeur de son argument : [(#TEXTE|moins{18})] retournera 18 . Il est possible de donner un nombre ngatif comme argument du filtre : [(#TOTAL_BOUCLE|moins{-5.2})] mais dans ce cas, sans doute est-il prfrable dutiliser le filtre |plus. Attention, si xx est un nombre virgule, sa notation doit utiliser le point en lieu et place de la virgule : [(#TOTAL_BOUCLE|moins{5.2})].

Manuel de rfrence des boucles et balises

161/186

|mois
Septembre 2009

Le filtre |mois affiche numriquement, sur 2 chiffres, le mois de la date sur laquelle il sapplique.
[(#DATE|mois)]

Laffichage retourn varie de 01 12.

|mult
Septembre 2009

Le filtre |mult{xx} est un filtre doprations mathmatiques. Il retourne le rsultat de la multiplication (le produit) de la valeur de la balise par xx. Si le retour de la balise nest pas de type numrique, il est considr comme 0 (zro) et le filtre retourne 0 (zro) : [(#TEXTE|mult{18})] retournera 0 . Il est possible de donner un nombre ngatif comme argument du filtre : [(#TOTAL_BOUCLE|mult{-5.2})]. Attention, si xx est un nombre virgule, sa notation doit utiliser le point en lieu et place de la virgule : [(#TOTAL_BOUCLE|mult{5.2})].

|nom_jour
Septembre 2009

Le filtre |nom_jour, appliqu une balise qui retourne une date valide, affiche lintitul littral du jour (lundi, mardi...). Exemple : pour un article publi le 22-01-2008, [(#DATE|nom_jour)] affichera mardi . Ce filtre peut utiliser un argument (soit abbr , soit initiale ) qui modifiera laffichage rsultant en abrviation ou en initiale : [(#VAL{2008-01-22}|nom_jour{abbr})] affichera mar. [(#VAL{2008-01-22}|nom_jour{initiale})] affichera m.

|nom_mois
Septembre 2009

Le filtre |nom_mois, appliqu une balise qui retourne une date valide, affiche lintitul littral du mois (janvier, fvrier...). exemple : pour un article publi le 22-01-2008, affichera janvier .

[(#DATE|nom_mois)]

Manuel de rfrence des boucles et balises

162/186

|non
Mars 2010

Le filtre |non (peut aussi tre crit |not) retourne soit rien soit un espace. quivalent |?{'',' '} ou |?{''}, il permet de retourner un contenu vide pour signaler que les parties optionnelles de la balise ne doivent pas afficher. exemples :
[(#TITRE|strlen|>{30}|non) Ce titre est court ] [(#EMAIL|non) #FORMULAIRE_SAISIE_EMAIL ]

voir aussi le filtre |oui

|ou
17 juin 2010

Le filtre |ou (peut aussi tre crit |or) permet de vrifier la prsence de lun des 2 lments. exemples :
[(#CHAPO|ou{#PS}) Il y a soit un chapo, soit un post-scriptum, soit les deux ] [(#CHAPO|ou{#PS}|non) Il n'y a ni chapo seul, ni post-scriptum seul, ni chapo et post-scriptum ]

voir aussi les filtres |et et |xou

|oui
8 mars

Le filtre |oui (peut aussi tre crit |yes) retourne soit un espace soit rien. quivalent |?{' ',''} ou |?{' '}, il permet de retourner un contenu non vide (un espace) pour signaler que les parties optionnelles de la balise doivent safficher. exemples :
[(#TITRE|strlen|>{30}|oui) Ce titre est long ] [(#EMAIL|oui) #FORMULAIRE_CONTACT ]

voir aussi le filtre |non

|parametre_url
26 juillet 2010

Le filtre |parametre_url{nom de variable,valeur}, appliqu une balise durl (par exemple : #SELF, #URL_ARTICLE, #URL_PAGE{sommaire}...), lui ajoute ou lui retire un paramtre. Par exemple :
[(#SELF|parametre_url{pays,france})]

ajoutera lurl de la page en cours soit : 163/186

Manuel de rfrence des boucles et balises

?pays=france

sil sagit du premier paramtre pass cette url, si lurl possde dj au moins un paramtre.

soit :
&pays=france

Typiquement, on placera la balise dans lattribut href dun lien :


<a href="[(#SELF|parametre_url{pays,france})]">France</a>

Pour rcuprer ensuite la valeur du paramtre pass dans lurl, on utilisera la balise #ENV. Ainsi, dans lexemple ci-dessus #ENV{pays} retournera france. Passer plusieurs paramtres lURL On peut enchaner les filtres pour passer en url une suite de paramtres et leurs valeurs :
[(#SELF|parametre_url{pays,france}|parametre_url{monnaie,euro})]

Si lon dsire passer une mme valeur plusieurs paramtres, on utilisera lcriture :
[(#SELF|parametre_url{pays|lieu|terrain,france})]

qui retournera lurl de la page en cours argumente de :


pays=france&lieu=france&terrain=france

Supprimer des paramtres existants Pour faire disparaitre un paramtre durl existant, il faut le vider de sa valeur en le dclarant nouveau, mais explicitement vide : [(#SELF|parametre_url{pays,''})] On peut supprimer plusieurs paramtres la fois avec lcriture :
[(#SELF|parametre_url{pays|lieu|terrain,''})]

|plus
Septembre 2009

Le filtre |plus{xx} est un filtre doprations mathmatiques. Il retourne le rsultat de laddition (la somme) de la valeur de la balise et xx. Si le retour de la balise nest pas de type numrique, il est considr comme 0 (zro) et le filtre retourne son propre argument : [(#TEXTE|plus{18})] retournera 18 . Il est possible de donner un nombre ngatif comme argument du filtre : mais dans ce cas, sans doute est-il prfrable dutiliser le

[(#TOTAL_BOUCLE|plus{-5.2})] filtre |moins.

Attention, si xx est un nombre virgule, sa notation doit utiliser le point en lieu et place de la virgule : [(#TOTAL_BOUCLE|plus{5.2})].

|PtoBR
Octobre 2009 maj : avril 2010

Le filtre |PtoBR transforme les sauts de paragraphe en simples retours la ligne, ce qui permet de resserrer une mise en page, par exemple lintrieur dun sommaire.

Manuel de rfrence des boucles et balises

164/186

Ce filtre permet aussi de supprimer occasionnellement lencadrement systmatique (voir lalina Paragraphes de larticle SPIP 2.0) des balises de texte par les tags <p> et </p> Par exemple, une balise #DESCRIPTIF qui retourne normalement le source html suivant :
<p><strong>William Shakespeare :</strong></p><p style="color:navy;">n Stratford-sur-Avon dans une maison sous les tuiles de laquelle tait cache...</p>

retournera, une fois le filtre appliqu :


<strong>William Shakespeare :</strong> <br />n Stratford-sur-Avon dans une maison sous les tuiles de laquelle tait cache...

|push
Dcembre 2009 |push

permet dajouter une valeur la fin dun tableau.

Le filtre |push sapplique une balise contenant un tableau PHP (voir #ARRAY) et y ajoute une nouvelle valeur. La cl est incrmente de 1 chaque nouvelle valeur. Si aucune cl na t dfinie pour la premire valeur, le tableau est index partir de 0 (la premire cl est 0).
#SET{un_tableau,#ARRAY{5,une_valeur}} #SET{un_tableau,#GET{un_tableau}|push{une_autre_valeur}} #SET{un_tableau,#GET{un_tableau}|push{une_troisieme_valeur}} [(#GET{un_tableau}|foreach)]

affiche :

5=> une_valeur 6=> une_autre_valeur 7=> une_troisieme_valeur

La premire cl est 5 parce quelle a t prcise lors de la cration du tableau (premier #SET). Exemple courant dusage de |push :
#SET{mes_articles, #ARRAY} <BOUCLE_mes_articles(ARTICLES){...}> #SET{mes_articles, #GET{mes_articles}|push{#ID_ARTICLE}} </BOUCLE_mes_articles>

Si les articles slectionns par la BOUCLE portent les numros 2, 5 et 10, [(#GET{mes_articles}|foreach)] retourne :

0=>2 1=>5 2=>10

Manuel de rfrence des boucles et balises

165/186

Ici, la premire cl est zro car aucune cl na t dfinie pralablement. Contrairement la fonction PHP array_push, |push ne produit pas de message derreur si la balise filtre nest pas un tableau.

|replace
Septembre 2009 maj : Novembre 2009

Le filtre |replace utilise une expression rationnelle (ne pas hsiter consulter la page wikipedia ddie : Expression_rationnelle) pour supprimer ou remplacer toutes les occurences dun motif dans la balise. Utilis avec un seul paramtre, une expression rgulire, le motif sera supprim. Par exemple pour supprimer tous les "notaXX" du texte [(#TEXTE|replace{nota\d*})]. Lorsquun deuxime paramtre est fourni au filtre, les occurences du motif seront remplaces par cette valeur. Par exemple pour remplacer tous les 2005 ou 2006 du texte par 2007 :
[(#TEXTE|replace{200(5|6), 2007})]

. Les arguments du filtre peuvent ntre que de simples textes : remplacer tous les au temps par autant : [(#TEXTE|replace{au temps, autant})] Un troisime paramtre peut encore tre pass au filtre. Il correspondra alors aux options (ou modificateurs) appliquer la regexp :
[(#TEXTE|replace{^ceci$, cela, UimsS})]

Attention : Sil nest pas possible de dclarer une classe de caractres comme argument du filtre : |replace{[0-9]+} produira une erreur de compilation due la prsence des crochets [ et ], il est nanmoins possible dcrire des regexp complexes utilisant les classes de caractres en les dfinissant pralablement :
#SET{ma_regexp, ^[[:space:]]*([0-9]+)([.)]|?)[[:space:]]+} [(#DESCRIPTIF|replace{#GET{ma_regexp}, __, Uims}})]

|safehtml
Octobre 2009

Les contenus HTML provenant de lextrieur (par retour de formulaire ou syndication) sont par dfinition considrs comme non contrls , et donc potentiellement problmatiques sils contiennent des balises mal fermes, des scripts javascript, php, sql... SPIP leur applique donc systmatiquement le filtre safehtml avant affichage. Cela concerne tout particulirement les flux syndiqus, les forums et les ptitions. Manuel de rfrence des boucles et balises 166/186

|saison
Septembre 2009

Le filtre |saison, appliqu une balise qui retourne une date valide, affiche lintitul littral de la saison correspondante (t, automne...). exemple : pour un article publi le 22-01-2008, affichera hiver .

[(#DATE|saison)]

les saisons sont dfinies comme suit :


du 21-03 au 20-06 : printemps du 21-06 au 20-09 : t du 21-09 au 20-12 : automne du 21-12 au 20-03 : hiver

|secondes
Septembre 2009

Le filtre |secondes affiche les [(#DATE|secondes)]

secondes de la date sur laquelle il sapplique.

Laffichage produit varie de 00 59. Si la date sur laquelle est applique le filtre ne contient pas dinformation horaire ([(#VAL{2009-10-24}|secondes)]), le filtre retournera 0 (zro).

|singulier_ou_pluriel{ xxx:chane_un, xxx:chane_plusieurs}


avril

2010

Le filtre |singulier_ou_pluriel permet de faire varier un affichage en fonction de la valeur numrique retourne par la balise laquelle il est appliqu. Le filtre |singulier_ou_pluriel est la plupart du temps utilis pour accorder (singulier ou pluriel) les chanes de langue en fonction du retour dune balise.

Manuel de rfrence des boucles et balises

167/186

Exemple Dans notre fichier local_xx.php, nous dclarons :


'nombre_truc_un' => 'il y a 1 retour dans cette boucle.', 'nombre_truc_plus' => 'il y a @nb@ retours dans cette boucle.'

Puis nous crivons notre boucle :


<BOUCLE_a(ARTICLES) {critre...}> ... </BOUCLE_a> [(#TOTAL_BOUCLE|singulier_ou_pluriel{local:nombre_truc_un, local:nombre_truc_plus, nb})] </B_a>

- Si la boucle ne retourne quun enregistrement, elle affichera :


il y a 1 retour dans cette boucle.

- Si la boucle retourne 36 enregistrements (par exemple), elle affichera :


il y a 36 retours dans cette boucle.

Noter que lon peut passer un 3e argument ce filtre : nb qui permet dintgrer dans la chane de langue la valeur numrique retourne par la balise. Attention : Ce filtre attend explicitement des item de langue comme arguments. Il ne faudra donc pas lui passer des balises de langue :
|singulier_ou_pluriel{module:item_un, module:item_plus}

est la bonne criture ;


|singulier_ou_pluriel{<:module:item_un:>, <:module:item_plus:>}

est une mauvaise criture.

| ?{sioui, sinon}
Aot 2009

Le filtre |?{sioui,sinon} est une version volue de |sinon. Il prend un ou deux paramtres : - sioui est la valeur afficher la place de llment filtr si celui-ci est non vide. - sinon est optionnel. Cest la valeur afficher si llment filtr est vide.
[(#TEXTE|?{#TEXTE, "pas de texte"})]

affiche le contenu de #TEXTE sil a t renseign ; pas de texte si celui-ci est vide.

|sinon
Septembre 2009

Le filtre |sinon affiche largument qui lui est donn si le retour produit par la balise laquelle il sapplique est vide :

Manuel de rfrence des boucles et balises

168/186

[(#TEXTE|sinon{"pas de texte"})]

affichera le contenu de #TEXTE sil existe, et pas de texte si #TEXTE ne retourne rien. Largument du filtre peut tre plus complexe quun simple texte :
[(#TEXTE|sinon{#INCLURE{fond=ma_page, env, id_article}})]

|supprimer_numero
Octobre 2009

Le filtre |supprimer_numero sutilise pour ne pas afficher le prfixe numrot [1] dun titre. Ainsi, pour le titre 0118. Titre de mon article , [(#TITRE|supprimer_numero)] affichera Titre de mon article . Notes [1] Le format des prfixes numrots est : un nombre de n chiffres, suivi dun point ou dune parenthse fermante, suivie dun espace. exemples : 015. Le titre 51) Le titre

|supprimer_tags
Octobre 2009

Le filtre |supprimer_tags supprime du retour de la balise laquelle il sapplique tous les tags html (<...>) tout en conservant le contenu de ces mme tags. Par exemple, pour une balise #DESCRIPTIF qui contiendrait : <p><strong>William Shakespeare</strong> naquit Stratford-sur-Avon, <span class='spip_document_164 spip_documents spip_documents_center' ><img src='IMG/png/maison-2.png' width="68" height="43" alt="" /></span> dans une maison sous les tuiles de laquelle tait cache...</p> retournera, une fois le filtre appliqu :
William Shakespeare naquit Stratford-sur-Avon, tuiles de laquelle tait cache... dans une maison sous les

Noter que le filtre supprime aussi tous les < rencontrs ; ainsi 18 + x < 21 ; x = ? deviendra 18 + x 21 ; x = ?

|table_valeur
Dcembre 2009 |table_valeur

retourne la valeur associe une cl dans un tableau.

|table_valeur{cl,valeur par dfaut}

Manuel de rfrence des boucles et balises

169/186

Le filtre |table_valeur (depuis SPIP 1.9) sapplique une balise contenant un tableau, prend une cl du tableau comme paramtre et retourne la valeur associe cette cl. Voir la balise #ARRAY pour une explication plus gnrale sur les tableaux. Exemple :
#SET{un_tableau,#ARRAY{0,rouge,1,bleu,2,vert}} [(#GET{un_tableau}|table_valeur{2})]

retourne vert. Le paramtre optionnel valeur par dfaut permet de prciser une valeur retourner si la valeur nest pas trouve (la cl nexiste pas ou la balise filtre nest pas un tableau).
[(#GET{un_tableau}|table_valeur{3,noir})]

retourne noir parce quil ny a pas de cl 3.


|table_valeur

fonctionne aussi avec des tableaux "linariss", par exemple, les tableaux retourns par les balises #ENV et #CONFIG (mais ces balises disposent de leur propre syntaxe pour accder aux valeurs du tableau). Le tableau ci-dessus linaris (Voir les fonctions serialize et unserialize en PHP) donne ceci :

a:3:{i:0;s:5:"rouge";i:1;s:4:"bleu";i:2;s:4:"vert";} [(#GET{un_tableau}|table_valeur{2})]

retourne toujours vert.

|taille_en_octets
Septembre 2009

Le filtre |taille_en_octets traduit un nombre doctets (25678906) en une chane de caractres plus explicite ( 24.4 Mo ). exemple, dans une boucle DOCUMENTS :
#TITRE - #TYPE_DOCUMENT[ - (#TAILLE|taille_en_octets)])

affichera Mon document - JPEG - 82.6 Ko

|texte_backend
Octobre 2009

Le filtre |texte_backend appliqu une balise de texte traduira le rendu html de celle-ci dans un format compatible avec les flux XML. Il est utilis, par exemple, dans le squelette backend.html qui gnre un fil RSS.

Manuel de rfrence des boucles et balises

170/186

Ce filtre transforme les liens en liens absolus, importe les entites html et chappe les tags html. Par exemple, une balise #DESCRIPTIF qui retourne normalement le source html suivant :
<p><strong>William Shakespeare</strong> naquit Stratford-sur-Avon, <span class='spip_document_164 spip_documents spip_documents_center' ><img src='IMG/png/maison-2.png' width="68" height="43" alt="" /></span> dans une maison sous les tuiles de laquelle tait cache...</p>

retournera, une fois le filtre appliqu :


&lt;p&gt;&lt;strong&gt;William Shakespeare&lt;/strong&gt; naquit &#224; Stratford-sur-Avon, &lt;span class='spip_document_164 spip_documents spip_documents_center' &gt; &lt;img src='http://www.domaine.tld/IMG/png/maison-2.png' width=&quot;68&quot; height=&quot;43&quot; alt=&quot;&quot; /&gt;&lt;/span&gt; dans une maison sous les tuiles de laquelle &#233;tait cach&#233;e...&lt;/p&gt;

|textebrut
Octobre 2009

Le filtre |textebrut transforme le retour de la balise sur laquelle il est appliqu en remplaant les tags <p> et <br /> par de simple retour la ligne ; les doubles retours la ligne par un retour simple et en transformant les espaces inscables et les doubles espaces par des espaces simples. Il sutilise, par exemple, pour renseigner un tag meta (html) : [<meta name="description" content="(#DESCRIPTIF|textebrut)">].

|texte_script
Octobre 2009 maj : Dcembre 2009

le filtre |texte_script transforme tout retour de balise en une chane utilisable en toute scurit dans un script PHP ou Javascript. Par exemple le script php suivant :
<?php $x = '[(#TEXTE|texte_script)]'; ?>

Attention : utilisez bien le caractre (simple quote) et non " (double quote) pour dlimiter votre variable php. En effet, dans le second cas, si votre texte contient le signe $, le rsultat peut tre catastrophique (affichage partiel, affichage dautre chose, plantage php, etc.). Appliqu sur une balise dans un squelette (html) hors script js ou php, ce filtre se contente dchapper lapostrophe : c\'tait l\'t.

|traduire_nom_langue
Septembre 2009

Manuel de rfrence des boucles et balises

171/186

|traduire_nom_langue sapplique la balise #LANG et retourne un traduction du code de langue quelle retourne (fr, en, it, etc.) dans cette langue.

Remarque : Les traductions des codes sont faites dans la langue que reprsente ce code et suivent les conventions dcriture de cette langue. Ainsi fr sera traduit franais en minuscule, alors que es sera traduit Espaol avec une majuscule.

|unique
Octobre 2009

Le filtre |unique retourne la valeur de la balise laquelle il sapplique seulement si cest la premiere fois quelle est rencontre. Il sapplique donc sur une balise place lintrieur dune boucle. Il est possible, pour diffrencier plusieurs utilisations indpendantes au sein de la boucle, de passer un argument de nommage ce filtre. Par exemple : [(#ID_SECTEUR|unique{en_tete})] naura pas dincidence sur (nempchera pas laffichage de) : [(#ID_SECTEUR|unique{corps})]. Le filtre accepte aussi un deuxime argument : 1 pour afficher le nombre de fois o la balise a t filtre. Par exemple : [(#ID_SECTEUR|unique{corps, 1})] affichera le total correspondant au nombre de fois o #ID_SECTEUR aura t filtr par |unique{corps}. On prfrera toutefois cette notation lutilisation (plus conomique) de la balise spcifique #TOTAL_UNIQUE{corps} (Voir la page consacre la balise #TOTAL_UNIQUE). - Le filtre |unique peut tre intressant pour, par exemple, afficher une liste darticles par date :
<BOUCLE_blog(ARTICLES) {par date} {inverse} {"<br>"}> [<hr /><h1>(#DATE|affdate_mois_annee|unique)</h1>] #TITRE ... </BOUCLE_blog>

La date ne sera affiche qu chaque changement de mois. - Autre exemple :


<BOUCLE_blog2(ARTICLES) {par date} {inverse}> [<hr /><h1>(#DATE|annee|unique)</h1>] [<h2>(#DATE|affdate{'Y-m'}|unique|nom_mois)</h2>] <a href="#URL_ARTICLE">#TITRE</a><br /> </BOUCLE_blog2>

affichera une liste ressemblant :


2005 mars article de mars autre article de mars fvrier

Manuel de rfrence des boucles et balises

172/186

article de fvrier 2004 dcembre un article

Dans ce dernier exemple, on utilise la notation affdate{'Y-m'} pour afficher le nom du mois chaque changement danne. En effet :

si lon ne faisait que [(#DATE|nom_mois|unique)], les noms de mois ne seraient affichs que la premire anne ; si le filtrage tait [(#DATE|unique|nom_mois)], on afficherait toutes les dates. En effet, #DATE retourne une date complte qui contient aussi les heures, minutes et secondes. Il y a donc une grande probabilit que les dates compltes de deux articles publis le mme jours soient diffrentes. Cest pourquoi on ne garde que le mois et lanne de la date avant de la passer au filtre unique.

|url_absolue
Juillet 2009 maj : octobre 2010

- |url_absolue fonctionne de la mme faon que le filtre |liens_absolus, mais sapplique une balise qui retourne une url (par exemple #URL_ARTICLE ou #URL_RUBRIQUE...). exemples :
<a href="-Publications-"... sera traduit en <a href="http://le_site.fr/-Publications-"...

ou encore
<a href="spip.php?rubrique67"...

donnera
<a href="http://le_site.fr/spip.php?rubrique67"...

de mme |url_absolue peut tre appliqu la balise #CHEMIN : [(#CHEMIN{polices/dustismo_bold.ttf}|url_absolue)] retournera


http://mon_domaine.tld/squelettes-dist/polices/dustismo_bold.ttf

Attention, cette balise conserve le protocole (http ou https) et le nom dhte de la page appelante. Pour forcer une certaine URL de base, il est possible de la passer en argument. Ceci peut savrer utile si votre site se dcline en plusieurs sous-domaines mais que vous souhaitez forcer un certain prfixe. Par exemple, si votre site se dcline en a.le-site.fr, b.lesite.fr, etc. :
#CHEMIN{truc.css}|url_absolue{#URL_SITE_SPIP}

donnera :
http://le-site.fr/squelettes/truc.css

et ce, mme si la balise est appele depuis a.le-site.fr.

|url_absolue_css
Octobre 2009

Le filtre |url_absolue_css appliqu un fichier de styles, transforme toutes les url relatives prsentes en url absolues. Manuel de rfrence des boucles et balises 173/186

Noter que le filtre |compacte utilise ce filtre dans son traitement.

|vider_attribut
Septembre 2009

Le filtre vider_attribut{attribut} est une variante de inserer_attribut. Il permet de supprimer les attributs html. Par exemple, on peut vouloir rinitialiser un attribut avant de lui affecter une valeur spcifique :
[(#LOGO||vider_attribut{style}|inserer_attribut{style,'width:100px;'})]

Ce code commence par enlever compltement lattribut style sur limage dun logo avant de le remettre mais dot cette fois seulement de la valeur dsire.

|xou
Mars 2010

Le filtre |xou (peut aussi tre crit |xor) permet de vrifier la prsence dun seul lment parmi 2. exemples :
[(#CHAPO|xou{#PS}) Il y a soit un chapo, soit un post-scriptum, mais pas les 2 ] [(#CHAPO|xou{#PS}|non) Il peut y avoir ni chapo ni post-scriptum ou bien un chapo et un post-scriptum]

Voir aussi les filtres |et et |ou

Manuel de rfrence des boucles et balises

174/186

Pour tous les filtres ci-aprs : [1] si un nombre dcimal est pass comme valeur, il faut utiliser le point et non la virgule [2] la vrification tient compte de la casse (majuscules-minuscules) utilise

|>{a}
Octobre 2009

Le filtre |>{valeur} retourne vrai si le rsultat de la balise laquelle il sapplique est strictement suprieur valeur .
{valeur}

peut tre numrique [1] (5, 18.2, 84,...), ou alphanumrique [2] (abc, un mot,...)

Par exemple :
[Il y a (#TOTAL_BOUCLE|>{1543}|?{' vraiment beaucoup d'articles', ' trop d'articles'}) dans cette rubrique.].

|>={a}
Septembre 2009

Le filtre |>={valeur} retourne vrai si le rsultat de la balise laquelle il sapplique est suprieur ou gal valeur .
{valeur}

peut tre numrique [1] (5, 18.2, 84,...), ou alphanumrique [2] (abc, un mot,...)

Par exemple :
[(#TOTAL_BOUCLE) [(#TOTAL_BOUCLE|>={2}|?{'articles', 'article'})] dans cette rubrique.] pour afficher correctement laccord.

|<{a}
Octobre 2009

Le filtre |<{valeur} retourne vrai si le rsultat de la balise laquelle il sapplique est strictement infrieur valeur .
{valeur}

peut tre numrique [1] (5, 18.2, 84,...), ou alphanumrique [2] (abc, un mot,...)

Par exemple :
[(#TOTAL_BOUCLE) [(#TOTAL_BOUCLE|<{2}|?{'article', 'articles'})] dans cette rubrique.] pour afficher correctement laccord.

|<={a}
Septembre 2009

Manuel de rfrence des boucles et balises

175/186

Le filtre |<={valeur} retourne vrai si le rsultat de la balise laquelle il sapplique est infrieur ou gal valeur .
{valeur}

peut tre numrique [1] (5, 18.2, 84,...), ou alphanumrique [2] (abc, un mot,...)

Par exemple :
[(#TOTAL_BOUCLE|<={4})]

| !={a}
Septembre 2009

Le filtre |!={valeur} permet de vrifier la stricte ingalit entre llment filtr et valeur. La vrification tient compte de la casse des caractres ( A diffrent de a ). Par exemple : <li [(#TITRE|!={dito}|?{'','id="edito"'})]>#TITRE</li>

|=={a}
Septembre 2009

Le filtre |=={valeur} permet de vrifier la stricte galit entre llment filtr et valeur. La vrification tient compte de la casse des caractres ( A diffrent de a ). Par exemple : <li [(#TITRE|=={dito}|?{'id="edito"',''})]>#TITRE</li>.

Manuel de rfrence des boucles et balises

176/186

Variables et Constantes de personnalisation


Certains comportements des pages de votre site peuvent tre modifis au moyen de variables ou de constantes PHP. Ces variables ou constantes sont normalement dfinies par SPIP, mais, pour obtenir une personnalisation plus fine du site, le webmestre peut les modifier. La plupart de ces personnalisations sont dfinir dans un fichier mes_options.php que lon prendra soin de placer dans le rpertoire config/ du site. Ce fichier devra tre un fichier php dbutant donc par <?php et se terminant par ?> (attention de ne pas laisser despace ou de ligne vierge avant <?php ou aprs ?>).

_CNIL_PERIODE
Septembre 2010

partir de la version 2.1.2 de SPIP, les adresses IP stockes dans la table spip_forum sont encryptes de manire non rversible (algorithme MD5) au bout de 4 mois. Il est possible de modifier le dlai avant cryptage des IP (4 mois par dfaut) en dfinissant cette constante dans votre fichier config/mes_options.php (voir larticle qui lui est consacr). Par exemple :
// crypter les IP au bout de 2 mois define('_CNIL_PERIODE', 3600*24*31*2);

Pour que SPIP ne crypte jamais les IP vous pouvez dfinir cette constante zro :
// ne jamais crypter les IP define('_CNIL_PERIODE', 0);

P.-S. Ce cryptage sappuie sur larticle 226-20 du code pnal franais et les bonnes pratiques dites par la CNIL.

_DIR_PLUGINS_AUTO
Avril 2010 _DIR_PLUGINS_AUTO

dfinit lemplacement du dossier qui contiendra les plugins installables par le mcanisme de tlchargement de plugins intgr SPIP. est une chane de caractres correspondant un chemin relatif partir

_DIR_PLUGINS_AUTO

de la racine de SPIP. Il est possible de dfinir cette constante dans votre fichier config/mes_options.php (voir larticle qui lui est consacr). Manuel de rfrence des boucles et balises 177/186

Dfinir cette constante la valeur '' (chane vide) permet de dsactiver compltement la fonctionnalit dinstallation automatique. Exemple :
// Dsactiver l'installation par tlchargement depuis l'administration de SPIP define('_DIR_PLUGINS_AUTO', '');

Par dfaut, cette constante vaut :


define('_DIR_PLUGINS_AUTO', _DIR_PLUGINS.'auto/');

Cest dire : le sous-dossier auto/ dans le dossier plugins/

_DOC_MAX_SIZE
Mars 2010

Cette constante dfinit le poids maximum en kilo-octets en-dessous duquel SPIP acceptera denregistrer un document [1]. Il est possible de dfinir cette constante dans votre fichier config/mes_options.php (voir larticle qui lui est consacr) [2] - Valeur par dfaut : 0 exemple :
// les documents de plus de 250 Ko ne seront pas enregistrs define('_DOC_MAX_SIZE', 250);

Lorsque cette constante est dfinie 0 (zro), SPIP neffectue pas de vrification lors de lupload dun document. Voir aussi : _IMG_MAX_SIZE. Notes [1] de par le fonctionnement des formulaires dupload, le fichier document sera quand mme envoy sur le serveur. Ce nest quune fois upload que SPIP vrifiera la conformit de ce fichier avec la constante. [2] Attention, cela gnrera un message PHP davertissement de type NOTICE : vrifiez que le serveur naffiche pas ce type derreur.

Manuel de rfrence des boucles et balises

178/186

_ID_WEBMESTRES
Avril 2010 _ID_WEBMESTRES dfinit le ou les administrateurs ayant le rle de webmestre (ce qui donne des droits supplmentaires dans linterface prive). _ID_WEBMESTRES est une chane de le caractre : (deux points).

caractres compose dune suite did_auteur, spars par

Il est possible de dfinir cette constante dans votre fichier config/mes_options.php (voir larticle qui lui est consacr) exemple :
// donner les droits de webmestre aux auteurs 1, 5 et 18 define('_ID_WEBMESTRES', '1:5:18');

Attention : les droits de webmestre ne seront donns aux auteurs did 1, 5 et 18 que si et seulement si ces auteurs sont administrateurs non restreints. Par dfaut, celui qui installe SPIP est webmestre. noter que depuis la version 2.1 de SPIP, cette constante est dprcie : on utilisera plutt linterface prive qui offre dsormais cette possibilit.

_IMG_MAX_HEIGHT
18 mars 2010

Cette constante dfinit la hauteur maximale en pixels en-dessous de laquelle SPIP acceptera denregistrer une image [1]. Il est possible de dfinir cette constante dans votre fichier config/mes_options.php (voir larticle qui lui est consacr) [2] - Valeur par dfaut : 0 exemple :
// les images de plus de 500 pixels de haut ne seront pas enregistres define('_IMG_MAX_HEIGHT', 500);

Lorsque cette constante est dfinie 0 (zro), SPIP neffectue pas de vrification lors de lupload dune image.

Manuel de rfrence des boucles et balises

179/186

Voir aussi : _IMG_MAX_SIZE et _IMG_MAX_WIDTH. Notes [1] de par le fonctionnement des formulaires dupload, le fichier image sera quand mme envoy sur le serveur. Ce nest quune fois upload que SPIP vrifiera la conformit de ce fichier avec la constante. [2] Attention, cela gnrera un message PHP davertissement de type NOTICE : vrifiez que le serveur naffiche pas ce type derreur.

_IMG_MAX_SIZE
Mars 2010

Cette constante dfinit le poids maximum en kilo-octets en-dessous duquel SPIP acceptera denregistrer une image [1]. Il est possible de dfinir cette constante dans votre fichier config/mes_options.php (voir larticle qui lui est consacr) [2] - Valeur par dfaut : 0 exemple :
// les images de plus de 350 Ko ne seront pas enregistres define('_IMG_MAX_SIZE', 350);

Lorsque cette constante est dfinie 0 (zro), SPIP neffectue pas de vrification lors de lupload dun document. ne pas confondre avec _IMG_MAX_WIDTH et _IMG_MAX_HEIGHT. Notes [1] de par le fonctionnement des formulaires dupload, le fichier image sera quand mme envoy sur le serveur. Ce nest quune fois upload que SPIP vrifiera la conformit de ce fichier avec la constante. [2] Attention, cela gnrera un message PHP davertissement de type NOTICE : vrifiez que le serveur naffiche pas ce type derreur.

Manuel de rfrence des boucles et balises

180/186

_IMG_MAX_WIDTH
18 mars 2010

Cette constante dfinit la largeur maximale en pixels en-dessous de laquelle SPIP acceptera denregistrer une image [1]. Il est possible de dfinir cette constante dans votre fichier config/mes_options.php (voir larticle qui lui est consacr) [2] - Valeur par dfaut : 0 exemple :
// les images de plus de 500 pixels de large ne seront pas enregistres define('_IMG_MAX_WIDTH', 500);

Lorsque cette constante est dfinie 0 (zro), SPIP neffectue pas de vrification lors de lupload dune image. Voir aussi : _IMG_MAX_SIZE et _IMG_MAX_HEIGHT. Notes [1] de par le fonctionnement des formulaires dupload, le fichier image sera quand mme envoy sur le serveur. Ce nest quune fois upload que SPIP vrifiera la conformit de ce fichier avec la constante. [2] Attention, cela gnrera un message PHP davertissement de type NOTICE : vrifiez que le serveur naffiche pas ce type derreur.

_MAX_ART_AFFICHES
Avril 2010 _MAX_ART_AFFICHES

permet de dfinir le nombre darticles lists dans la boite Dans la mme rubrique de la page /?exec=articles&id_article=xxx dans lespace priv.

Il est possible de dfinir cette constante (par dfaut SPIP affiche 10 articles) dans votre fichier config/mes_options.php (voir larticle qui lui est consacr) Exemple :
// afficher une liste de 25 articles dans la boite 'Dans la mme rubrique' define('_MAX_ART_AFFICHES', '25');

Manuel de rfrence des boucles et balises

181/186

_NOM_PERMANENTS_ACCESSIBLES
juin 2010

Le nom du rpertoire des fichiers permanents accessibles par HTTP. Ce rpertoire contient les images et documents qui sont tlchargs (ou plutt tlverss) via linterface prive de SPIP. Il contient galement les logos des diffrents lments de SPIP.
define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/");

Cette constante est modifiable uniquement dans ecrire/inc_version.php

_NOM_PERMANENTS_INACCESSIBLES
juin 2010

Le nom du rpertoire des fichiers permanents inaccessibles par HTTP. Il contient le fichier de configuration gnr par SPIP lors de linstallation, mais galement la base sqlite et le fichier chmod.php (qui permet de mieux grer le mode daccs en criture dtermin par le serveur)
define('_NOM_PERMANENTS_INACCESSIBLES', "config/");

Cette constante est modifiable uniquement dans ecrire/inc_version.php

_NOM_TEMPORAIRES_ACCESSIBLES
juin 2010

Le nom du rpertoire des fichiers temporaires accessibles par HTTP. Ce rpertoire contient principalement le cache des images, feuilles de style et fichiers Javascript qui sont manipuls par SPIP.
define('_NOM_TEMPORAIRES_ACCESSIBLES', "local/");

Cette constante ne peut tre modifie que dans ecrire/inc_version.php

Manuel de rfrence des boucles et balises

182/186

_NOM_TEMPORAIRES_INACCESSIBLES
juin 2010

le nom du rpertoire des fichiers temporaires inaccessibles par HTTP. Il contient principalement les fichiers de log, les exports de la base, et la plupart des caches.
define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/");

Application : si lon souhaite placer les fichiers concerns ailleurs que dans tmp/, il suffit de changer la valeur de cette constante pour le nom du nouveau rpertoire qui aura t choisi (ex. "tmp123456/") Cette constante doit tre modifie directement dans ecrire/inc_version.php

_TRI_ARTICLES_RUBRIQUE
Avril 2010

permet de dfinir lordre de tri pour laffichage des articles lists dans la boite Dans la mme rubrique de la page /?exec=articles&id_article=xxx ainsi que lordre de tri pour laffichage des articles lists dans la boite Tous les articles publis dans cette rubrique de la page /?exec=naviguer&id_rubrique=xx dans lespace priv.
_TRI_ARTICLES_RUBRIQUE

Par dfaut, SPIP ordonne les articles par date de rdaction (champ sql date) de la plus rcente la plus ancienne. Il est possible de dfinir cette constante dans votre fichier config/mes_options.php (voir larticle qui lui est consacr) Exemple :
// ordonner les listes d'articles dans l'espace priv de celui // de date de modification la plus rcente celui de date de // modification la plus ancienne define('_TRI_ARTICLES_RUBRIQUE', 'date_modif DESC');

$controler_dates_rss
Mai 2010 $controler_dates_rss

dfinit si SPIP doit vrifier les dates des lments des flux rss des

sites syndiqus.

Lorsque SPIP intgre les articles issus dun flux RSS dans sa base de donnes, il vrifie la date des articles : Manuel de rfrence des boucles et balises 183/186

- si larticle a plus dun an - ou sil est dat de plus de deux jours dans le futur Si lune de ces conditions est remplie, SPIP considre alors quil y a une erreur dans la date de larticle, et remplace celle-ci par la date courante. Il est possible de dsactiver ce comportement en dfinissant la variable $controler_dates_rss comme false dans le fichier config/mes_options.php (voir larticle qui lui est consacr) Exemple :
// ne pas modifier la date des articles syndiqus $controler_dates_rss = false;

$filtrer_javascript
Mars 2010

la variable $filtrer_javascript permet de choisir le mode de scurisation que SPIP appliquera sur les scripts javascript embarqus dans les rdactionnels. Pour les scripts javascript contenus dans les articles, rubriques, champ bio des auteurs,... trois modes de traitement sont possibles :

parano : -1 par dfaut : 0 ok : 1

Le mode parano nexcute le code ni dans lespace priv ni lors de laffichage public (le code est simplement affich de manire inoffensive). Le mode par dfaut affiche le code en rouge (sans lexcuter) dans lespace priv mais lexcute (sans lafficher) lors de laffichage public. Le mode ok excute le code partout (affichage public comme affichage dans lespace priv). Il est possible de changer la valeur de cette variable dans le fichier mes_options.php ( placer dans le rpertoire config/) :
// scuriser les scripts javascript en mode parano $filtrer_javascript = -1;

Manuel de rfrence des boucles et balises

184/186

$nombre_de_logs
25 juin 2010

Cette variable PHP dfinit le nombre maximal darchives de chaque fichier de logs de SPIP (mysql.log, spip.log, prive_spip.log, etc..) qui sont placs dans _NOM_TEMPORAIRES_INACCESSIBLES. En effet, une fois quun fichier de log a atteint sa taille maximale, il est sauvegard sous un autre nom puis un fichier vide est cr. $nombre_de_logs vaut 4 par dfaut (ce qui correspond en fait un fichier en criture et 3 fichiers archivs). Application : si lon souhaite ne plus avoir de fichier de log, il suffit de rajouter dans mes_options.php la ligne suivante :
$nombre_de_logs = 0;

$spip_header_silencieux
25 juin 2010

Cette variable permet de prciser si lon souhaite que lentte HTTP [1] contienne les informations relatives la version de SPIP et aux plugins utiliss, ce que fait SPIP par dfaut. Voici un exemple de capture fournie par Firebug :

Pour limiter au maximum les informations contenues dans lentte HTTP, il suffit de rajouter dans config/mes_options.php la ligne :
$spip_header_silencieux = 1;

Manuel de rfrence des boucles et balises

185/186

Notes [1] Lentte HTTP permet danalyser ce que renvoie le site web (plus exactement le serveur web) lorsque vous demandez une URL depuis votre navigateur. Vous pouvez tester ce que retourne le serveur sur ce site : http://www.outils-referencement.com

$taille_des_logs
25 juin 2010

Cette variable PHP dfinit la taille maximale (en Ko) des fichiers de logs de SPIP (mysql.log, spip.log, prive_spip.log, etc..) qui sont placs dans _NOM_TEMPORAIRES_INACCESSIBLES. Elle est personnalisable dans mes_options.php, et vaut 100 par dfaut. Application : si lon souhaite ne plus avoir de fichier de log, il suffit de rajouter dans mes_options.php la ligne suivante :
$taille_des_logs = 0;

Manuel de rfrence des boucles et balises

186/186

You might also like