Smarty Postfilters / Prefilters如何在输出之前应用于模板

时间:2012-07-10 15:14:51

标签: php smarty smarty3 smarty2

我对如何使用smarty的post / pre过滤器感到困惑。

我需要做的是在显示之前搜索并替换页面中的某些元素。我希望在调用$ smarty-> display之前做到这一点。这意味着,在它被保存到磁盘之前,但在它被编译之后(所以,postfilter)。

示例后过滤功能:

function smarty_postfilter_replace($tpl_output, $search, $replace)
{
    return str_replace($search, $replace, $tpl_output);
}

如何在智能输出之前应用此权限。我在查看Smarty文档(http://www.smarty.net/docsv2/de/advanced.features.postfilters.tpl)和其他一些示例之后尝试过,但似乎都没有。

有人可以给我一个如何执行此操作的示例代码,以及如何将参数传递给过滤器($ search,$ replace)。

由于

1 个答案:

答案 0 :(得分:1)

后置过滤器可能是最容易被误解的过滤器。虽然预过滤器在未编译的模板源代码上运行,并且输出过滤器在评估的输出上运行(你知道,生成的HTML),后过滤器作为编译器的一部分运行 - 它是由PHP生成的由编译器。我不确定有人会对此做些什么。无论如何,这不是你想要的。

使用输出过滤器替换您的内容。如果您正在使用缓存,则在写入缓存之前运行,如果您没有任何非缓存元素。如果您有非缓存元素(如{nocache}或带有nocache标志的变量),则在评估缓存后运行(几乎每次请求)。