void smarty_function_name( |
$params, | |
$template) ; |
array $params
;object $template
;
All attributes passed to
template functions from the template are contained in the
$params
as an associative array.
The output (return value) of the function will be substituted in place of
the function tag in the template, eg the
{fetch}
function. Alternatively, the function can simply perform some other
task without any output, eg the
{assign}
function.
If the function needs to assign some variables to the template or use
some other Smarty-provided functionality, it can use the supplied
$template
object to do so eg
$template->foo()
.
Example 18.1. function plugin with output
<?php /* * Smarty plugin * ------------------------------------------------------------- * File: function.eightball.php * Type: function * Name: eightball * Purpose: outputs a random magic answer * ------------------------------------------------------------- */ function smarty_function_eightball($params, Smarty_Internal_Template $template) { $answers = array('Yes', 'No', 'No way', 'Outlook not so good', 'Ask again soon', 'Maybe in your reality'); $result = array_rand($answers); return $answers[$result]; } ?>
which can be used in the template as:
Question: Will we ever have time travel? Answer: {eightball}.
Example 18.2. function plugin without output
<?php /* * Smarty plugin * ------------------------------------------------------------- * File: function.assign.php * Type: function * Name: assign * Purpose: assign a value to a template variable * ------------------------------------------------------------- */ function smarty_function_assign($params, Smarty_Internal_Template $template) { if (empty($params['var'])) { trigger_error("assign: missing 'var' parameter"); return; } if (!in_array('value', array_keys($params))) { trigger_error("assign: missing 'value' parameter"); return; } $template->assign($params['var'], $params['value']); } ?>
See also:
registerPlugin()
,
unregisterPlugin()
.