Основные моменты в работе с шаблонизатором Smarty
{$foo}         отображение простой переменной (не массив и не объект)
{$foo[4]}      отображает 5-й элемент числового массива
{$foo.bar}     отображает значение ключа "bar" ассоциативного массива, подобно PHP $foo['bar']
{$foo.$bar}    отображает значение переменного ключа массива, подобно PHP $foo[$bar]
{$foo->bar}    отображает свойство "bar" объекта
{$foo->bar()}  отображает возвращаемое значение метода "bar" объекта
{#foo#}        отображает переменную "foo" конфигурационного файла
{$smarty.config.foo}  синоним для {#foo#}
{$foo[bar]}    синтаксис доступен только в цикле section, см. {section}
{assign var=foo value='baa'}{$foo}   отображает "baa", см. {assign}
 
Также доступно множество других комбинаций
 
{$foo.bar.baz}
{$foo.$bar.$baz}
{$foo[4].baz}
{$foo[4].$baz}
{$foo.bar.baz[4]}
{$foo->bar($baz,2,$bar)}  передача параметра
{"foo"}        статические значения также разрешены
 
{* отображает серверную переменную "SERVER_NAME" ($_SERVER['SERVER_NAME'])*}
{$smarty.server.SERVER_NAME}
 
//
// Внедренные переменные в двойных кавычках
//
{func var="test $foo test"}        ищет $foo
{func var="test $foo_bar test"}    ищет $foo_bar
{func var="test $foo[0] test"}     ищет $foo[0]
{func var="test $foo[bar] test"}   ищет $foo[bar]
{func var="test $foo.bar test"}    ищет $foo (не $foo.bar)
{func var="test `$foo.bar` test"}  ищет $foo.bar
{func var="test `$foo.bar` test"|escape}  модификатор вне кавычек!
 
//
// Примеры
//
{* заменит $tpl_name её значением *}
{include file="subdir/$tpl_name.tpl"}
{* не заменит $tpl_name *}
{include file='subdir/$tpl_name.tpl'} 
{* нужны обратные кавычки из за того, что имя содержит точки *}
{cycle values="one,two,`$smarty.config.myval`"}
{* аналог $module['contact'].'.tpl' в PHP *}
{include file="`$module.contact`.tpl"}
{* аналог $module[$view].'.tpl' в PHP *}
{include file="`$module.$view`.tpl"}
{* отображение параметра page из URL ($_GET) http://www.example.com/index.php?page=foo *}
{$smarty.get.page}
 
{* отображение параметра "page" из формы ($_POST['page']) *}
{$smarty.post.page}
 
{* отображение значения cookie "username" ($_COOKIE['username']) *}
{$smarty.cookies.username}
 
{* отображение серверной переменной "SERVER_NAME" ($_SERVER['SERVER_NAME'])*}
{$smarty.server.SERVER_NAME}
 
{* отображение переменной системного окружения "PATH" *}
{$smarty.env.PATH}
 
{* отображение переменной сессии PHP "id" ($_SESSION['id']) *}
{$smarty.session.id}
 
{* отображение переменной "username" из смешенных get/post/cookies/server/env *}
{$smarty.request.username}

Арифметические операции

{$foo+1}
{$foo*$bar}
{* несколько более сложных примеров *}
{$foo->bar-$bar[1]*$baz->foo->bar()-3*7}
{if ($foo+$bar.test%$baz*134232+10+$b+10)}
{$foo|truncate:"`$fooTruncCount/$barTruncFactor-1`"}
{assign var="foo" value="`$foo+$bar`"}

Модификаторы переменных

{* применение модификатора к переменной *}
{$title|upper}
 
{* модификатор с параметрами *}
{$title|truncate:40:'...'}
 
{* применение модификатора к аргументу функции *}
{html_table loop=$myvar|upper}
 
{* с параметрами *}
{html_table loop=$myvar|truncate:40:'...'}
 
{* применение модификатора к строке *}
{'foobar'|upper}
 
{* использование date_format для форматирования текущей даты *}
{$smarty.now|date_format:"%Y/%m/%d"}
 
{* применение модификатора к функции *}
{mailto|upper address='smarty@example.com'}
 
{* использование функции PHP str_repeat *}
{'='|str_repeat:80}
 
{* функция PHP count *}
{$myArray|@count}
 
{* функция PHP shuffle, применяемая к IP адресу сервера *}
{$smarty.server.SERVER_ADDR|shuffle}
 
(* это приведет в верхний регистр букв и обрежет пробелы у всех элементов массива *}
<select name="name_id">
    {html_options output=$myArray|upper|truncate:20}
</select>
 
//
// Комбинирование модификаторов
//
{$articleTitle}
{$articleTitle|upper|spacify}
{$articleTitle|lower|spacify|truncate}
{$articleTitle|lower|truncate:30|spacify}
{$articleTitle|lower|spacify|truncate:30:". . ."}