Smarty will recognize assigned variables embedded in "double quotes" so long as the variable name contains only numbers, letters, under_scores and brackets[]. See naming for more detail.
With any other characters, for example a .period or
$object>reference
, then the variable must be surrounded by`backticks`
.You cannot embed modifiers, they must always be applied outside of quotes.
Example 3.5. Syntax examples
{func var="test $foo test"} <-- sees $foo {func var="test $foo_bar test"} <-- sees $foo_bar {func var="test $foo[0] test"} <-- sees $foo[0] {func var="test $foo[bar] test"} <-- sees $foo[bar] {func var="test $foo.bar test"} <-- sees $foo (not $foo.bar) {func var="test `$foo.bar` test"} <-- sees $foo.bar {func var="test `$foo.bar` test"|escape} <-- modifiers outside quotes!
Example 3.6. Practical examples
{* will replace $tpl_name with value *} {include file="subdir/$tpl_name.tpl"} {* doesn't replace $tpl_name *} {include file='subdir/$tpl_name.tpl'} <-- {* must have backticks as it contains a . *} {cycle values="one,two,`$smarty.config.myval`"} {* same as $module['contact'].'.tpl' in a php script {include file="`$module.contact`.tpl"} {* same as $module[$view].'.tpl' in a php script {include file="`$module.$view`.tpl"}
See also escape
.