'pre'/'post'-Filter
'pre'-Filter und 'post'-Filter folgen demselben Konzept. Der
einzige Unterschied ist der Zeitpunkt der Ausführung.
string smarty_prefilter_name (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 (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.
Beispiel 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);
}
?> |
|
Beispiel 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;
}
?> |
|