Skip to content

编写插件 {#plugins.writing}

插件可以由 Smarty 自动从文件系统加载,也可以通过注册_* API 函数在运行时注册。它们也可以通过使用 unregister_* API 函数进行注销。

对于在运行时注册的插件,插件函数的名称不必遵循命名规则。

如果插件依赖于另一个插件提供的某些功能(如 Smarty 附带的一些插件),那么加载所需插件的正确方式是这样的:

<?php
function smarty_function_yourPlugin(array $params, Smarty_Internal_Template $template)
{
  // 加载依赖的插件
  $template->smarty->loadPlugin('smarty_shared_make_timestamp');
  // 插件代码
}
?>

作为一般规则,当前评估的模板的 Smarty_Internal_Template 对象总是作为最后一个参数传递给插件,但有两个例外:

  • 修饰符根本不传递 Smarty_Internal_Template 对象

  • 为了保持向旧版本 Smarty 的向后兼容性,块在 Smarty_Internal_Template 对象后传递$repeat