'pre'-Filter und 'post'-Filter folgen demselben Konzept. Der einzige Unterschied ist der Zeitpunkt der Ausführung.
string smarty_prefilter_name( |
$source, | |
&$smarty) ; |
string $source
;object &$smarty
;'pre'-Filter werden verwendet, um die Quellen eines Templates direkt vor der Kompilierung zu verarbeiten. Als erster Parameter wird die Template-Quelle, die möglicherweise bereits durch eine weiteren 'pre'-Filter bearbeitet wurden, übergeben. Das Plugin muss den resultierenden Wert zurückgeben. Achtung: Diese Werte werden nicht gespeichert und nur zum Kompilier-Zeitpunkt verwendet.
string smarty_postfilter_name( |
$compiled, | |
&$smarty) ; |
string $compiled
;object &$smarty
;'post'-Filter werden auf die kompilierte Ausgabe direkt vor dem Speichern angewendet. Als erster Parameter wird der kompilierte Template-Code übergeben, der möglicherweise zuvor von anderen 'post'-Filtern bearbeitet wurde. Das Plugin muss den veränderten Template-Code zurückgeben.
Example 16.7. 'pre'-Filter Plugin
<?php /* * Smarty plugin * ------------------------------------------------------------- * File: prefilter.pre01.php * Type: prefilter * Name: pre01 * Purpose: Convert html tags to be lowercase. * ------------------------------------------------------------- */ function smarty_prefilter_pre01($source, &$smarty) { return preg_replace('!<(\w+)[^>]+>!e', 'strtolower("$1")', $source); } ?>
Example 16.8. 'post'-Filter Plugin
<?php /* * Smarty plugin * ------------------------------------------------------------- * File: postfilter.post01.php * Type: postfilter * Name: post01 * Purpose: Output code that lists all current template vars. * ------------------------------------------------------------- */ function smarty_postfilter_post01($compiled, &$smarty) { $compiled = "<pre>\n<?php print_r(\$this->get_template_vars()); ?>\n</pre>" . $compiled; return $compiled; } ?>