Chapter 7. Built-in Functions

Table of Contents

{$var=...}
{append}
{assign}
{block}
{call}
{capture}
{config_load}
{debug}
{extends}
{for}
{foreach},{foreachelse}
@index
@iteration
@first
@last
@show
@total
{break}
{continue}
{function}
{if},{elseif},{else}
{include}
{include_php}
{insert}
{ldelim},{rdelim}
{literal}
{nocache}
{php}
{section},{sectionelse}
.index
.index_prev
.index_next
.iteration
.first
.last
.rownum
.loop
.show
.total
{setfilter}
{strip}
{while}

Smarty comes with several built-in functions. These built-in functions are the integral part of the smarty template engine. They are compiled into corresponding inline PHP code for maximum performance.

You cannot create your own custom functions with the same name; and you should not need to modify the built-in functions.

A few of these functions have an assign attribute which collects the result the function to a named template variable instead of being output; much like the {assign} function.

{$var=...}

This is a short-hand version of the {assign} function. You can assign values directly to the template, or assign values to array elements too.

Note

Assignment of variables in-template is essentially placing application logic into the presentation that may be better handled in PHP. Use at your own discretion.

The following attributes can be added to the tag:

Attributes:

Attribute Name Shorthand Type Required Default Description
scope n/a string No n/a The scope of the assigned variable: 'parent','root' or 'global'

Option Flags:

Name Description
nocache Assigns the variable with the 'nocache' attribute

Example 7.1. Simple assignment


{$name='Bob'}

The value of $name is {$name}.

  

The above example will output:


The value of $name is Bob.

  

Example 7.2. Assignment with math


{$running_total=$running_total+$some_array[row].some_value}

  

Example 7.3. Assignment of an array element


{$user.name="Bob"}

  

Example 7.4. Assignment of an multidimensional array element


{$user.name.first="Bob"}

  

Example 7.5. Appending an array


{$users[]="Bob"}

  

Example 7.6. Assigment in the scope of calling template

Variables assigned in the included template will be seen in the including template.


{include file="sub_template.tpl"}
...
{* display variable assigned in sub_template *}
{$foo}<br>
...

  

The template above includes the example sub_template.tpl below


...
{* foo will be known also in the including template *}
{$foo="something" scope=parent}
{* bar is assigned only local in the including template *}
{$bar="value"}
...


See also {assign} and {append}