registerPlugin() — dynamically register plugins
void registerPlugin(string type,
string name,
mixed callback,
bool cacheable,
mixed cache_attrs);
This method registers functions or methods defined in your script as plugin. It uses the following parameters:
type
defines the type of the plugin. Valid values are "function", "block", "compiler" and "modifier".
name
defines the name of the plugin.
callback
defines the PHP callback. it can be either:
A string containing the function name
An array of the form array($object, $method)
with
$object
being a reference to an
object and $method
being a string
containing the method-name
An array of the form
array($class, $method)
with
$class
being the class name and
$method
being a method of the class.
cacheable
and cache_attrs
can be
omitted in most cases. See controlling cacheability of plugins output
on how to use them properly.
Example 14.39. register a function plugin
<?php $smarty->registerPlugin("function","date_now", "print_current_date"); function print_current_date($params, $smarty) { if(empty($params["format"])) { $format = "%b %e, %Y"; } else { $format = $params["format"]; } return strftime($format,time()); } ?>
And in the template
{date_now} {* or to format differently *} {date_now format="%Y/%m/%d"}
Example 14.40. register block function plugin
<?php // function declaration function do_translation ($params, $content, $smarty, &$repeat, $template) { if (isset($content)) { $lang = $params["lang"]; // do some translation with $content return $translation; } } // register with smarty $smarty->registerPlugin("block","translate", "do_translation"); ?>
Where the template is:
{translate lang="br"}Hello, world!{/translate}
Example 14.41. register modifier plugin
<?php // let's map PHP's stripslashes function to a Smarty modifier. $smarty->registerPlugin("modifier","ss", "stripslashes"); ?>
In the template, use ss
to strip slashes.
<?php {$var|ss} ?>
See also
unregisterPlugin()
,
plugin functions,
plugin block functions,
plugin compiler functions,
and the
creating plugin modifiers section.