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 5. Variable Modifiers

Variable modifiers can be applied to variables, custom functions or strings. To apply a modifier, specify the value followed by a | (pipe) and the modifier name. A modifier may accept additional parameters that affect its behavior. These parameters follow the modifer name and are separated by a : (colon). Also, all php-functions can be used as modifiers implicitly (more below) and modifiers can be combined. .

Example 5.1. Modifier examples

{* apply modifier to a variable *}

{* modifier with parameters *}

{* apply modifier to a function parameter *}
{html_table loop=$myvar|upper}

{* with parameters *}
{html_table loop=$myvar|truncate:40:'...'}

{* apply modifier to literal string *}

{* using date_format to format the current date *}

{* apply modifier to a custom function *}
{mailto|upper address=''}

{* using  php's str_repeat *}

{* php's count *}

{* php's shuffle on servers's ip *}

(* this will uppercase and truncate the whole array *}
<select name="name_id">
{html_options output=$myArray|upper|truncate:20}


  • If you apply a modifier to an array variable instead of a single value variable, the modifier will be applied to every value in that array. If you really want the modifier to work on an entire array as a value, you must prepend the modifier name with a @ symbol.


    {$articleTitle|@count} - will print out the number of elements in the $articleTitle array using the php count() function as a modifier.

  • Modifiers are autoloaded from the $plugins_dir or can be registered explicitly with the register_modifier() function. The later is useful for sharing a function between php scripts and smarty templates.

  • All php-functions can be used as modifiers implicitly, as demonstrated in the example above. However, using php-functions as modifiers has two little pitfalls:

    • First - sometimes the order of the function-parameters is not the desirable one. Formatting $foo with {"%2.f"|sprintf:$foo} actually works, but asks for the more intuitive, like {$foo|string_format:"%2.f"} that is provided by the Smarty distribution.

    • Secondly - if $security is enabled, all php-functions that are to be used as modifiers have to be declared trusted in the MODIFIER_FUNCS element of the $security_settings array.

See also register_modifier(), combining modifiers. and extending smarty with plugins


This is used to capitalize the first letter of all words in a variable. This is similar to the PHP ucwords() function.

Parameter Position Type Required Default Description
1 boolean No FALSE This determines whether or not words with digits will be uppercased

Example 5.2. capitalize


$smarty->assign('articleTitle', 'next x-men film, x3, delayed.');



Where the template is:



Will output:

next x-men film, x3, delayed.
Next X-Men Film, x3, Delayed.
Next X-Men Film, X3, Delayed.


See also lower and upper