Name
registerPlugin() — dynamically register plugins
Description
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-nameAn array of the form
array($class, $method)
with$class
being the class name and$method
being a method of the class.
cacheable
andcache_attrs
can be omitted in most cases. See controlling cacheability of plugins output on how to use them properly.
Пример 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"}
Пример 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}
Пример 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.