Carnet Wiki

Nouveaux Filtres

les filtres (sauf file_get_content) sont tous documentés dans la doc mise à jour.

Affichage conditionnel (annonce)

L’écriture des balises dynamiques (type SquelettesDeFormulaires) sous forme de squelettes nécessite fréquemment d’y tester la valeur des balises présentes, pour insérer une chaîne ou une autre selon les cas. Ce filtrage est peu différent de celui employé jusqu’ici qui fonctionnait plutôt sur le mode ajout/retrait de caractères à partir d’une chaîne qu’on ne testait pas véritablement.

Afin d’autoriser des tests concis et rapides à l’exécution, le filtre  ? a été introduit, avec la syntaxe suivante :

[(#balise|?{sioui:sinon})]

Cela insère la chaîne « sioui » si la balise #balise n’est pas vide, et insère « sinon » autrement.

Les filtres == <> < > <= >= ont également été introduits. Par exemple :

[(#balise|=={oui}|?{sioui:sinon})]

insère la chaîne « sioui » si la balise #balise est égale à « oui », et insère « sinon » autrement.

Ces filtres devraient réduire sensiblement le besoin de définir ses propres filtres sous forme de fonctions dans les fichiers personnels. Ils sont évidemment compilés en leur équivalent PHP, ce qui devraient aussi apporter un petit gain en performance.

Les filtres choixsivide et choixsiegal évoqués sur spip-dev ont été remplacés par cette écriture dans les squelettes standards et ne sont de fait plus nécessaires.

Le filtre « sinon » peut quant à lui s’écrire :

[(#NOM_SITE|?{#NOM_SITE:'site inconnu'})]

ce qui est un peu plus verbeux que

[(#NOM_SITE|sinon{'site inconnu'})]

mais un peu plus efficace à l’exécution.


unique

retourne la valeur passée en argument si c’est la première fois que cette valeur est recontrée.


hauteur et largeur

comme leurs noms l’indiquent, retournent la hauteur et la largeur d’une image.

La valeur qu’on leur passe peut être :
-  un nom de fichier
-  un code HTML d’image (du type ).


file_get_contents

(pour l’instant juste un copier-coller)

le filtre |file_get_contents fonctionne très bien à partir de php version >= 4.3.0 :

Illustration :

<BOUCLE_url_externe(ARTICLES){id_article}{ps==^http://}>
[(#PS*|file_get_contents)]
</BOUCLE_url_externe>

En français : « Si le post-scriptum commence par "http://", intégrer la page en question. »

Le * de [(#PS*)] est là pour éviter que le moteur typographique entre en jeu sur l’URL de la page.

Le « résultat » du filtre (c’est-à-dire le code produit) est dans le cache de spip : ça évite de bastonner le script à chaque visite.

Bonus sécurité : dans le script externe, on peut vérifier qu’on est bien appelé depuis la même machine, et qu’on peut donc avoir « confiance ».


Attention SPIP 1.8 : pas de filtres dans les critères d’une boucle

donc {par #ENV{}} et pas {par [(#ENV{}|filtre)]}

Voir ElementsDeGrammaireSpip

- Mise à jour :6 janvier 2009 à 00h11min