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 #модуль, определение четности, нечетности, кратности