Chapter 8. Custom Functions

Table of Contents
{assign}
{counter}
{cycle}
{debug}
{eval}
{fetch}
{html_checkboxes}
{html_image}
{html_options}
{html_radios}
{html_select_date}
{html_select_time}
{html_table}
{mailto}
{math}
{popup}
{popup_init}
{textformat}

Smarty comes with several custom functions that you can use in the templates.

{assign}

{assign} is used for assigning template variables during the execution of a template.

Attribute NameTypeRequiredDefaultDescription
varstringYesn/aThe name of the variable being assigned
valuestringYesn/aThe value being assigned

Example 8-1. {assign}

{assign var='name' value='Bob'}

The value of $name is {$name}.

The above example will output:

The value of $name is Bob.

Example 8-2. {assign} with some maths

This complex example must have the variables in `backticks`

{assign var=running_total value=`$running_total+$some_array[row].some_value`}

Example 8-3. Accessing {assign} variables from a PHP script

To access {assign} variables from a php script use get_template_vars(). Here's the template that creates the variable $foo.

{assign var='foo' value='Smarty'}

The template variables are only available after/during template execution as in the following script.

<?php

// this will output nothing as the template has not been executed
echo $smarty->get_template_vars('foo');

// fetch the template to a variable
$whole_page $smarty->fetch('index.tpl');

// this will output 'smarty' as the template has been executed
echo $smarty->get_template_vars('foo');

$smarty->assign('foo','Even smarter');

// this will output 'Even smarter'
echo $smarty->get_template_vars('foo');

?>

The following functions can also optionally assign template variables.

{capture}, {include}, {include_php}, {insert}, {counter}, {cycle}, {eval}, {fetch}, {math}, {textformat}

See also assign() and get_template_vars().