Chapter 18. 以插件扩展Smarty

Table of Contents

插件如何工作
命名规则
编写插件
模板函数
修饰器
块函数
编译函数
前置/后置过滤器
输出过滤器
资源插件
插入插件

Smarty 2.0引入的插件架构,已经成为了Smarty最常使用的自定义功能了。 插件包含了:

除了资源插件以外,为了向上兼容还是保留了通过register_* API来注册插件的方式。 如果你不是使用API方式而是使用直接修改$custom_funcs, $custom_mods等方式,那么你需要调整你的代码,改为通过API方式或 转换成自定义插件。

插件如何工作

插件是按需载入的。当特定的修饰器,函数,资源等被调用的时候插件才会被载入。 而且,即使同一请求中有多个Smarty实例在运行,每个资源也只会被载入一次。

前置/后置过滤器和输出过滤器稍微有些不同。 虽然它们并没有在模板中使用,但是当模板执行的时候,它们必须通过API被注册或者被明确载入。 相同类型的过滤器执行的顺序会依据它们注册或载入的先后顺序。

插件目录变量可以是一个路径的字符串或者是包含多个路径的数组。 安装插件的方法是直接把插件文件放置在这些目录下,Smarty会自动按需使用。