Smarty - guide

Page 170

Fonctionnalités avancées

Filtres de post-compilation Les filtres de post-compilation sont des fonctions PHP que vos templates exécutent après avoir été compilés. Les filtres de post-compilation peuvent être soit déclarés, soit chargés depuis les répertoires des plugins en utilisant la fonction load_filter() ou en réglant la variable $autoload_filters. Smarty passera le template compilé en tant que premier paramètre et attendra de la fonction qu'elle retourne le résultat de l'exécution.

Exemple 15.3. Utilisation d'un filtre de post-compilation de templates <?php // mettez celà dans votre application function add_header_comment($tpl_source, &$smarty) { return "<?php echo \"<!-- Créé par Smarty ! -->\n\"; ?>\n".$tpl_source; } // enregistre le filtre de post-compilation $smarty->register_postfilter('add_header_comment'); $smarty->display('index.tpl'); ?>

Votre template Smarty index.tpl ressemblera, après compilation à : <!-- Créé par Smarty ! --> {* reste du contenu du template... *}

Voir aussi register_postfilter(), les pré-filtres et load_filter().

Filtres de sortie Quand le template est appelé via les fonctions display() ou fetch(), sa sortie est envoyée à travers un ou plusieurs filtres de sorties. Ils diffèrent des filtres de post-compilation dans le sens où ils agissent sur la sortie des templates, une fois exécutés, et non sur les sources des templates. Les filtres de sortie peuvent être soit déclarés soit chargés depuis les répertoires des plugins en utilisant la fonction load_filter() ou en réglant la variable $autoload_filters. Smarty passera la sortie du template en premier argument et attendra de la fonction qu'elle retourne le résultat de l'exécution.

Exemple 15.4. Utilisation d'un filtre de sortie <?php // mettez ceci dans votre application function protect_email($tpl_output, &$smarty) { $tpl_output = preg_replace('!(\S+)@([a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,3}|[0-9]{1,3}))!', '$1%40$2', $tpl_output); return $tpl_output; } // enregistre le filtre de sortie $smarty->register_outputfilter('protect_email'); $smarty->display('index.tpl'); // dorénavant toute occurence d'un adresse email dans le résultat du template // aura un protection simple contre les robots spammers ?>

164


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.