Основные моменты в работе с шаблонизатором 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:". . ."}