Dans certains cas, par exemple pour exécuter un filtre personnel avant l’application automatique des fonctions internes de SPIP, il peut être nécessaire de désactiver ce traitement.
L’étoile simple :
*
On utilisera dans ce cas la notation #BALISE*
à laquelle on appliquera son filtre personnel en prenant bien soin de vérifier s’il est nécessaire d’y ajouter après les traitements internes que l’on vient de désactiver.
Par exemple :
[(#TEXTE*|mon_filtre|propre)]
commencera par désactiver les traitements automatiques appliqués à #TEXTE et définis dans #$GLOBALS['table_des_traitements']['TEXTE']
;
puis appliquera le filtre personnel |mon_filtre
;
enfin appliquera le filtre |propre
qui venait d’être désactivé par l’utilisation de *
.
Illustration :
Le texte de mon article, tel que je l’ai saisi dans l’interface privée et tel qu’il est archivé en base de données est [1] :
<img388|left>
Il y a aujourd'hui {trois cent quarante-huit ans six mois et dix-neuf jours} que les parisiens s'éveillèrent au bruit de toutes les cloches sonnant à grande volée dans la triple enceinte de la Cité, de l'Université et de la Ville.
Ce n'est cependant pas un jour dont l'histoire ait gardé souvenir que le {{6 janvier 1482}}.
#TEXTE
affiche le source html suivant (avec les traitements par défaut donc) :
<p><span class="spip_document_388 spip_documents spip_documents_left" style="float: left; width: 150px;">
<img src="../local/cache-vignettes/L150xH150/extraits-4f9ff.jpg" alt="" style="height: 150px; width: 150px;" height="150" width="150"></span></p>
<p>Il y a aujourd’hui <i>trois cent quarante-huit ans six mois et dix-neuf jours</i> que les parisiens s’éveillèrent au bruit de toutes les cloches sonnant à grande volée dans la triple enceinte de la Cité, de l’Université et de la Ville.
<br>Ce n’est cependant pas un jour dont l’histoire ait gardé souvenir que le <strong>6 janvier 1482</strong>.</p>
#TEXTE*
affichera le source html suivant :<img388|left>
Il y a aujourd'hui {trois cent quarante-huit ans six mois et dix-neuf jours} que les parisiens s'éveillèrent au bruit de toutes les cloches sonnant à grande volée dans la triple enceinte de la Cité, de l'Université et de la Ville.
Ce n'est cependant pas un jour dont l'histoire ait gardé souvenir que le {{6 janvier 1482}}.
Sur ce source brut, j’applique mon filtre perso (disons qu’il modifie l’image associée à cet article et ce pour ce squelette spécifiquement, ce qui m’interdit de le faire en ré-éditant l’article...). Ce filtre, donc, recherche la séquence <imgxxx|
pour la remplacer par <img25|
; pour simplifier : il remplace les images de l’article par une image unique. Noter que ceci n’aurait pas été possible (du moins, pas simplement) à partir du source html retourné par l’utilisation de #TEXTE
.
Maintenant que mon filtre a fait son travail, il me faut appeler le traitement automatique que SPIP applique à la balise #TEXTE
pour retrouver le traitement du (nouveau) modèle <img25|left>
et les traitements typographiques divers : gras, italique...
J’appelle donc dans mon squelette :[(#TEXTE*|mon_filtre|propre)]
qui me retournera bien le source html :
<p><span class='spip_document_25 spip_documents spip_documents_left' style='float:left; width:180px;'>
<img src='IMG/png/defaut_cache.png' width="180" height="180" alt="" /></span></p>
<p>Il y a aujourd'hui <i>trois cent quarante-huit...
L’étoile double :
**
En plus de ce que l’on vient de voir, SPIP applique par défaut à toutes les balises rencontrées dans un squelette un traitement de sécurité qui interdit l’exécution de script (php ou javascript) susceptible d’être retourné par la balise. Par exemple un <?php echo 'toto'; ?>
, inclus dans le corps du texte d’un article, ne sera pas exécuté (« toto » ne s’affichera pas).
Dans certains cas, trés spécifiques, il peut, cependant, être nécessaire de récupérer la valeur brute, non désinfectée (donc potentiellement dangereuse), d’une balise. Par exemple pour traiter certains retours de formulaires, certaines variables d’environnement passées dans #ENV
.
Dans ces cas là, et en étant conscient des risques posés, on utilisera la notation #BALISE**
. Mais une fois encore, attention à cette écriture (voir à ce propos l’utilisation de la balise #ENV).