编写插件

插件可以让Smarty自动载入,或通过register* API函数在运行时进行注册。它们还可以通过unregister* API函数来注销。

当插件是运行时注册的,插件的名称不一定需要遵循下面的命名规则。

如果插件依赖与其他插件提供的功能时(如依赖与一些Smarty自带的插件),比较好的方法是像下面这样载入需要的插件:

  1. <?php
  2. function smarty_function_yourPlugin(array $params, Smarty_Internal_Template $template)
  3. {
  4. // 载入依赖的插件
  5. $template->smarty->loadPlugin('smarty_shared_make_timestamp');
  6. // 插件代码
  7. }
  8. ?>
  9.  

一般而言,Smarty_Internal_Template对象将作为插件的最后一个参数传递,除了两种例外情况:

  • 修饰器完全不接受Smarty_Internal_Template对象。

  • 为了向上兼容老版本的Smarty,区块插件将 $repeat 作为最后一个参数,因此Smarty对象是倒数第二个参数。

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