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().