Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty


Chapter 7. Built-in Functions

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.


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.


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:


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


The value of $name is {$name}.


The above example will output:

The value of $name is Bob.


Example 7.2. Assignment with math



Example 7.3. Assignment of an array element



Example 7.4. Assignment of an multidimensional array element



Example 7.5. Appending an array



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 *}


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 *}

See also {assign} and {append}