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.
    
    
     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:
    
    
_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).