编译函数

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

|mixed smartycompiler_name(|$params, |
| |
$smarty_);|

array $params;object $smarty;

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


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

  1. <?php
  2. /*
  3. * Smarty plugin
  4. * -------------------------------------------------------------
  5. * File: compiler.tplheader.php
  6. * Type: compiler
  7. * Name: tplheader
  8. * Purpose: 输出模板文件名和编译时间
  9. * -------------------------------------------------------------
  10. */
  11. function smarty_compiler_tplheader($params, Smarty $smarty)
  12. {
  13. return "<?php\necho '" . $smarty->_current_file . " compiled at " . date('Y-m-d H:M'). "';\n?>";
  14. }
  15. ?>
  16.  

模板内调用:

  1. {* 此函数仅在编译时执行 *}
  2. {tplheader}
  3.  

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

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

参见: registerPlugin(), unregisterPlugin().

原文: https://www.smarty.net/docs/zh_CN/plugins.compiler.functions.tpl