Smarty Manual
Prev | Chapter 16. Extending Smarty With Plugins | Next

# Template Functions

``void smarty_function_`name`` (array $params, object &$smarty)`

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 `$smarty` object to do so eg `$smarty->foo()`.

Example 16-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) { $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 16-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) { if (empty($params['var'])) { $smarty->trigger_error("assign: missing 'var' parameter"); return; } if (!in_array('value', array_keys($params))) { $smarty->trigger_error("assign: missing 'value' parameter"); return; } $smarty->assign($params['var'], $params['value']); } ?>`

See also: `register_function()`, `unregister_function()`.

Prev | Home | Next
Writing Plugins | Up | Modifiers