编译函数仅会在模板的编译过程中调用, 它对模板嵌入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'; ?>