现在的位置: 首页 > 综合 > 正文

模板-过滤器

2013年10月28日 ⁄ 综合 ⁄ 共 1317字 ⁄ 字号 评论关闭

前过滤器

    模板前过滤器是在模板编译前运行的PHP函数。你可以用来预处理模板,例如删除不需要的注释,看看模板里放了什么等。

    前过滤器可以被注册,或者从插件目录中用load_filter()函数调入,或者设置$autoload_filters变量而调用。

    Smarty将模板源代码作为第一个参数传递,并期望函数返回经处理的模板源代码。

    例子15-2. 使用模板前过滤器

    下例将移除模板资源中所有的HTML注释。

<?php
// 将其放置在你的应用中
function remove_dw_comments($tpl_source, &$smarty)
{
    return 
preg_replace("/<!--#.*-->/U",'',$tpl_source);
}

// 注册前过滤器
$smarty->register_prefilter('remove_dw_comments');
$smarty->display('index.tpl');
?>

后过滤器

    模板后过滤器是在模板编译后前运行的PHP函数。后过滤器可以被注册,或者从插件目录中用load_filter()函数调入,或者设置$autoload_filters变量而调用。Smarty将传递编译后的模板代码作为第一个参数,并期望函数返回处理后的结果。

    例子15-3. 使用模板后过滤器

<?php
// 将其放置在你的应用中
function add_header_comment($tpl_source, &$smarty)
{
    return 
"<?php echo \"<!-- Created by Smarty! -->\n\"; ?>\n".$tpl_source;
}

// 注册后过滤器
$smarty->register_postfilter('add_header_comment');
$smarty->display('index.tpl');
?>

    上面的后过滤器将使编译过的Smarty模板index.tpl看起来为:

<!-- Created by Smarty! -->
{* rest of template content... *}

register_prefilter()

register_prefilter() -- 动态注册前过滤器

描述

void register_prefilter ( mixed function)

    该函数动态注册前过滤器,在模板编译前过滤模板。如何设置前过滤器函数的更多信息,参见前过滤器一节。

PHP回调函数可以是:

  • 包含函数名称的字符串

  • 一个数组,形如array(&$object, $method),其中&$object是对象的一个引用,而$method是包含方法名的字符串

  • 一个数组,形如array(&$class, $method),其中$class是类名,而$method是类方法的名称。

    参见unregister_prefilter()register_postfilter()register_ouputfilter()load_filter()$autoload_filters以及前过滤器

抱歉!评论已关闭.