PhpRiot
Become Zend Certified

Prepare for the ZCE exam using our quizzes (web or iPad/iPhone). More info...


When you're ready get 7.5% off your exam voucher using voucher CJQNOV23 at the Zend Store

Template Functions

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 254. 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($paramsSmarty_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 255. 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($paramsSmarty_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().

Smarty Template Engine