编译函数

编译函数仅会在模板的编译过程中调用, 它对模板嵌入PHP代码或者对时间敏感的内容时比较有用。 如果同时存在编译函数和 自定义函数,那么编译函数会优先使用。

mixed smarty_compiler_name( $params,
$smarty);
array $params;
object $smarty;

编译函数有两个参数:已预编译的变量字符串数组,及Smarty对象。 该函数将会返回嵌入到模板的PHP代码。

Example 18.6. 一个简单的编译函数


<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     compiler.tplheader.php
 * Type:     compiler
 * Name:     tplheader
 * Purpose:  输出模板文件名和编译时间
 * -------------------------------------------------------------
 */
function smarty_compiler_tplheader($params, Smarty $smarty)
{
    return "<?php\necho '" . $smarty->_current_file . " compiled at " . date('Y-m-d H:M'). "';\n?>";
}
?>

模板内调用:


{* 此函数仅在编译时执行 *}
{tplheader}

     

在编译后的文件中,PHP代码如下:


<?php
echo 'index.tpl compiled at 2002-02-20 20:02';
?>

     

参见: registerPlugin(), unregisterPlugin().