Smarty 是什么?
为何使用它?
用例和工作流程
语法比较
模板继承
最佳实践
速成教程
预过滤器和后过滤器插件在概念上非常相似;它们的区别在于执行方面,更确切来说,在于它们的执行时间。
string smarty_prefilter_name( |
$source, | |
$template) ; |
string $source
;object $template
;预过滤器用于在编译之前立即处理模板的源代码。预过滤器函数的第一个参数是模板源代码,可能已由其他预过滤器修改过。该插件应返回已修改的源代码。请注意,此源代码不会在任何地方保存,仅用于编译。
string smarty_postfilter_name( |
$compiled, | |
$template) ; |
string $compiled
;object $template
;后过滤器用于在编译完成但编译模板保存到文件系统之前立即处理模板的已编译输出(PHP 代码)。后过滤器函数的第一个参数是编译的模板代码,可能已由其他后过滤器修改过。该插件应返回此代码的已修改版本。
示例 18.7。预过滤器插件
<?php /* * Smarty plugin * ------------------------------------------------------------- * File: prefilter.pre01.php * Type: prefilter * Name: pre01 * Purpose: Convert html tags to be lowercase. * ------------------------------------------------------------- */ function smarty_prefilter_pre01($source, Smarty_Internal_Template $template) { return preg_replace('!<(\w+)[^>]+>!e', 'strtolower("$1")', $source); } ?>
示例 18.8。后过滤器插件
<?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_Internal_Template $template) { $compiled = "<pre>\n<?php print_r(\$template->getTemplateVars()); ?>\n</pre>" . $compiled; return $compiled; } ?>
另请参见 registerFilter()
和 unregisterFilter()
。