Writing Plugins

Plugins can be either loaded by Smarty automatically from the filesystem or they can be registered at runtime via one of the register_* API functions. They can also be unregistered by using unregister_* API functions.

Smarty可自动从文件系统装载插件,或者运行时通过register_* API函数装载。 可以通过unregister_* API函数卸载已经装载的插件。

For the plugins that are registered at runtime, the name of the plugin function(s) does not have to follow the naming convention.


If a plugin depends on some functionality provided by another plugin (as is the case with some plugins bundled with Smarty), then the proper way to load the needed plugin is this:


require_once $smarty->_get_plugin_filepath('function', 'html_options');

As a general rule, Smarty object is always passed to the plugins as the last parameter (with two exceptions: modifiers do not get passed the Smarty object at all and blocks get passed &$repeat after the Smarty object to keep backwards compatibility to older versions of Smarty).

Smarty对象通常作为传递给插件的最后一个参数(有两个例外:1、修饰插件根本不接受传递过来的Smarty对象。2、为了向上兼容老版本的Smarty,区块插件将 &$repeat 作为最后一个参数,因此Smarty对象是倒数第二个参数。)