Smarty - это компилирующий обработчик шаблонов для PHP. Говоря более четко, он предоставляет один из инструментов, которые позволяет добиться отделения прикладной логики и данных от представления. Это очень удобно в ситуациях, когда программист и верстальщик шаблона - различные люди.
Как закомментировать?
{* комментарий *}
Как экранировать код в котором встречаются {}
{ldelim} = {, {rdelim} = } либо
{literal}...{/literal}
Как посчитать количество элементов в массиве
{$group.items|@count}
Как создать внутреннюю переменную smarty
{assign var=tmp_var value="string value"}
Значение переменной по-умолчанию
{$my_var|default:"Default value"}
Как сделать чтобы smarty вычислил значение переменной при присвоении
{include file="`$evaluable_variable`/shell_header.inc"}
{include file="$cpp/shell_header.inc"}
{include file="$template/index.tpl"}
так не сработает - {include file="$prefixindex.tpl"}
{$include file=$prefix|concat:"index.tpl"}
Полезные строковые модификаторы
{$cart_content[index].cost|replace:'&':'&'}
{$mystring|substr:5:10}
{$mystring|substr:5}
Экранирование
{$articleTitle|escape}{$articleTitle|escape:'html'} {* экранирует & " ' < > *}
{$articleTitle|escape:'htmlall'} {* экранирует ВСЕ HTML-сущности *}
{$articleTitle|escape:'url'}
{$articleTitle|escape:'quotes'}
Текущая дата
{$smarty.now|date_format:"%d.%m.%Y %H:%M"}
Как организовать цикл for
for($i=1;$i<10;$i++)
{section name=foo loop=9}
{$smarty.section.foo.iteration}{/section}
Использование условий if
{if isset($name) && NOT empty($name)}
...
{elseif $name == $foo}
...
{/if}
{if is_array($foo) && count($foo) > 0)
{* do a foreach loop *}
{/if}
Передача параметров вызываемому шаблону
{include file='navigator.tpl' params=$params}
В шаблоне navigator.tpl будет доступна переменная $params с переданным значением.
Включение шаблона можно перенаправить в переменную
{include file='partials/nav.tpl' params=$params assign=nav}
{$nav}
Текущая дата
{$smarty.now|date_format:"%d.%m.%Y %H:%M"}
Как организовать цикл for
for($i=1;$i<10;$i++)
{section name=foo loop=9}
{$smarty.section.foo.iteration}
{/section}
Как в цикле foreach определить первый и последний элемент
{foreach name=foo from=$array}
{if $smarty.foreach.foo.first} этот первый {/if}
{$smarty.foreach.foo|@debug_print_var}
{if $smarty.foreach.foo.last} этот последний {/if}
{/foreach}
Управление кэшированием вложеных шаблонов
Не кэшировать шаблон
{include 'sub_template.tpl' nocache}
Кэшировать на 500 секунд
{include 'sub_template.tpl' cache_lifetime=500}
Принудительное кэширование
{include 'sub_template.tpl' caching}
{include 'sub_template.tpl' caching cache_id="individualCacheID"}
Вычисление
{math equation="(( x + y ) / z )" x=2 y=10 z=2}
{math equation="x + y" x=4.4444 y=5.0000 format="%.2f"}
{math equation="height * width / division"
height=$row_height
width=$row_width
division=$div}
Рандомное число
{math equation='rand(10,100)'}
Дополнительные вспомогательные операции
% mod $a mod $b modulus %is [not] div by $a is not div by 4 divisible by $a % $b == 0is [not] even $a is not even [not] an even number (unary) $a % 2 == 0is [not] even by $a is not even by $b grouping level [not] even ($a / $b) % 2 == 0is [not] odd $a is not odd [not] an odd number (unary) $a % 2 != 0is [not] odd by $a is not odd by $b [not] an odd grouping ($a / $b) % 2 != 0 #модуль, определение четности, нечетности, кратности


