Modification du plugin SmartyFilter
Dans le fichier de config du module (config/xml), je rajoute un "service" :
Dans le fichier smarty-filter.xml, je rajoute la description de mon filtre :
Lorsque le plugin est activé dans le backoffice du site, il vous reste encore à activer le ou les filtres que vous voulez utiliser. (Outils > Filtre Smarty)
Et je viens créer un fichier ShortcodeFilter.php , que je place dans le dossier \SmartyFilter\Filter
Dans ce fichier ShortcodeFilter.php, j'écris en php, avec la fonction preg_replace(), de rechercher les expressions [blockquote], [/blockquote], etc., et de les remplacer par <div class="blockquote">, </div>, etc
La fonction preg_replace() peut avoir un argument unique, ou un tableau d'arguments. C'est mon cas : je définis chaque Shortcode, et le code html par lequel je souhaite que le moteur de template le remplace.
Voici le code de mon fichier Shortcodefilter.php :
Chose étrange, il n'y a pas de balise fermante pour le php..
Attention aux [ et aux / : il faut un \ pour qu'ils soient bien pris en compte dans preg_replace()
Et ça marche : c'est à dire que j'écris dans mon article [blockquote]mon super texte à formater en citation[/blockquote] et lorsque j'enregistre mon article, le moteur transforme le Shortcode en balise html <div class="blockquote">mon super texte à formater en citation</div>
Bien évidemment, la class .blockquote aura été définie au préalable dans votre fichier css.
Dans mon fichier, j'ai actuellement défini 2 shortcodes. Si je veux en définir d'autres, il suffit de préciser dans mon array le shortcode et ce par quoi il doit être remplacé.
Dernière mise à jour