Version 6 — Avril 2010 — JLuc
La La doc officielle décrit les contours de la grammaire de SPIP et constitue un mode d’emploi pour démarrer.
Cette page vise à compléter la doc avec plus de détails sur ce qui est possible pour chacune des expressions intervenant dans la syntaxe des boucles SPIP et autres éléments du langage.
Cette Cette liste des possibles et des impossibles devrait éviter de longues et stériles heures de debuging à des codeurs aventuriers mais mal renseignés. </b >
- Eléments de grammaire SPIP
- Exemples d’expressions composées
Pas de langage spécialisé, juste du français pour décrire ce qui pose problème.
Régle régle : ne pas mettre les crochets parenthèses pour appeler un filtre en critère
Exemple exemple :
{date_birth < #ENV{agemin,9999-99-99}|approxdate}
{date_birth != #ENV{agemin}|?{0000-00-00, 9999-99-99}}
Note : Depuis SPIP la 1.9, on peut par contre utiliser des fonctions SQL dans les critères , criteres ( notamment pour le tri :
_ < code>par FCT(titre)</code > par fct(titre ).
Régle régle : ne pas mettre les crochets parenthèses dans la partie valeur d’un #SET
exemple :
#SET{dater,[(#DATE|affdate{'m-d'})]} <!-- ne marche pas -->
#SET{dater,#DATE|affdate{'m-d'}} <!-- marche -->
Régle régle : pas trop compliquer les expressions
<:une_chaine|image_typo{police=[(#CONFIG{dir/police})]}:>
ne sera pas compris par spip [1] :></code >
_ ne sera pas compris par spip , tandis que :<:article|image_typo{police=#CONFIG{dir/police}}:>
le sera._ (nov 08)
<blockquote class="spip">
<small >
...
Règle règle : pas de boucles SPIP ni de <INCLURE>
à l’intérieur d’un filtre.
Ainsi, par exemple :
[(#POPULARITE_ABSOLUE|<{'3'}|?{'',<INCLURE(inclusions/inc_article_decompte_popularite.php3){id_article}>})]
n’est pas possible, mais ce qui suit est possible :
régle : pas de filtres dans les critères
Règle règle : parenthèse parfois nécessaires dans les critères
Il faut écrire {par (#ENV{x})}
car ce n’est pas accepté comme ça : {par #ENV{x}}
</small > </quote >
1) #SET imbriqués et appels de filtre [2] :
[(#ENV{retour}|=={'./'}|?{
[(#SET{retour,../})],
[(#SET{retour,[(#VAL{../}|concat{#ENV{retour,''}})]})]
})]
Peut en l’occurence également s’écrire :
[(#ENV{retour}|=={./}|?{
#SET{retour, ../},
#SET{retour, ../#ENV{retour, ''}}
})]
--------