filtres de pré-compilation/filtres de post-compilation
Les filtres de pré-compilation et les filtres de post-compilation ont des concepts très
proches. Ils différent dans leur exécution, plus précisément dans le
moment où ils sont exécutés.
string smarty_prefilter_name (string $source, object &$smarty)
Les filtres de pré-compilation sont utilisés pour transformer la source d'un template
juste avant la compilation. Le premier paramètre passé à la fonction
de filtre de pré-compilation est la source du template, éventuellement modifiée par
d'autres filtres de pré-compilations. Le plugin est supposé retourner la source modifiée.
Notez que cette source n'est sauvegardée nulle part, elle est seulement
utilisé pour la compilation.
string smarty_postfilter_name (string $compiled, object &$smarty)
Les filtres de post-compilation sont utilisés pour modifier la sortie du template
(le code PHP) juste après que la compilation a été faîte mais juste
avant que le template ne soit sauvegardé sur le système de fichiers.
Le premier paramètre passé à la fonction de filtre de post-compilation est le code
du template compilé, éventuellement déja modifié par d'autres filtres de post-compilations.
Le plugin est censé retourner la version modifiée du code.
Exemple 16-7. Plugin de filtre de post-compilation
<?php /* * Smarty plugin * ------------------------------------------------------------- * Fichier : prefilter.pre01.php * Type : filtre de pré-compilation * Nom : pre01 * Rôle : Passe les balises HTML en minuscules. * ------------------------------------------------------------- */ function smarty_prefilter_pre01($source, &$smarty) { return preg_replace('!<(\w+)[^>]+>!e', 'strtolower("$1")', $source); } ?>
|
|
Exemple 16-8. Plugin de filtre de post-compilation
/* * Smarty plugin * ------------------------------------------------------------- * Fichier : postfilter.post01.php * Type: filtre de post-compilation * Nom : post01 * Rôle : Renvoie du code qui liste toutes les variables * du template. * ------------------------------------------------------------- */ function smarty_postfilter_post01($compiled, &$smarty) { $compiled = "<pre>\n<?php print_r($this->get_template_vars()); ?>\n</pre>" . $compiled; return $compiled; } ?>
|
|
Voir aussi
register_prefilter(),
unregister_prefilter()
register_postfilter() et
unregister_postfilter().