Variable Modifiers

Smarty Manual
Prev |  | Next

# Chapter 5. Variable Modifiers

Variable modifiers can be applied to variables, custom functions or strings. To apply a modifier, specify the value followed by the `|` (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 `:` (colon).

Example 5-1. modifier example
    {* Uppercase the title *}
    <h2>{$title|upper}</h2>

    {* Truncate the topic to 40 characters use ... at the end *}
    Topic: {$topic|truncate:40:"..."}

    {* format a literal string *}
    {"now"|date_format:"%Y/%m/%d"}

    {* apply modifier to a custom function *}
    {mailto|upper address="me@domain.dom"}

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 an `@` symbol like so: `{$articleTitle|@count}` (this will print out the number of elements in the $articleTitle array.)

Modifiers can be autoloaded from your $plugins_dir (also see: Naming Conventions) or can be registered explicitely (see: register_modifier). Additionally all php-functions can be used as modifiers implicitly. (The `@count`-example above actually uses php's count-function and not a smarty-modifier). Using php-functions as modifiers has two little pitfalls: First: Sometimes the order of the function-parameters is not the desirable one (`{"%2.f"|sprintf:$float}` actually works, but asks for the more intuitive. For example:`{$float|string_format:"%2.f"}` that is provided by the Smarty distribution). Second: with $security turned on all php-functions that are to be used as modifiers have to be declared trusted in the $security_settings['MODIFIER_FUNCS']-array.

# capitalize

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

This is used to capitalize the first letter of all words in a variable.

Example 5-2. capitalize
`<?php $smarty = new Smarty; $smarty->assign('articleTitle', 'next x-men film, x3, delayed.'); $smarty->display('index.tpl'); ?>`
Where index.tpl is:
    {$articleTitle}
    {$articleTitle|capitalize}
    {$articleTitle|capitalize:true}
This will output:
    next x-men film, x3, delayed.
    Next X-Men Film, x3, Delayed.
    Next X-Men Film, X3, Delayed.

Prev | Home | Next
{$smarty} reserved variable | Up | count_characters