Smarty поставляется с набором встроенных функций, интегрированных в язык шаблонов. Нельзя создавать свои функции с такими же именами или модифицировать встроенные функции. Опишем некоторые из таких функций.
1. Функция config_load
Синтаксис:
{config_load file="имя_файла" }
Эта функция используется для загрузки в шаблон переменных из конфигурационных файлов. Кроме имени загружаемого файла, у этой функции может быть еще несколько дополнительных параметров. Например, параметр section, в котором указывают имя секции для загрузки. Более подробную информацию об этих и других параметрах можно получить из документации Smarty.
Эта функция предназначена для того, чтобы собирать в переменную выходные данные шаблона вместо того, чтобы выводить их на экран.
Все, что находится между {capture name="varname"} и {/capture}, будет записано в переменную с именем varname. Захваченный таким образом контент может быть использован в шаблоне посредством специальной переменной $smarty.capture.varname, где varname – значение, переданное в атрибут name функции capture. Если имя переменной не задано, будет использовано имя default.
Второй параметр assign задает имя переменной, которой будет присвоено захваченное выходное значение. Этот параметр, как и name, не обязательный.
Секция Section – это цикл для обхода элементов массива. Обязательными являются параметры name, с помощью которого задается имя секции, и loop, который представляет собой переменную, определяющую число итераций цикла.
Как правило, loop – это переменная типа массив, и число итераций секции равно числу элементов этого массива. Чтобы вывести переменную внутри цикла, нужно после имени переменной указать в квадратных скобках имя секции.
Кроме того, можно использовать дополнительные атрибуты key – имя ключа для текущего элемента массива и name – имя цикла, с помощью которого можно будет получать доступ к его свойствам. Атрибуты from и item – обязательные.
Циклы foreach являются альтернативой циклам section. Действие функции foreach очень похоже на работу цикла foreach в языке PHP.
{foreach from=$articles item=art}
Title: {$art}<br>
{/foreach}
Пример 15.9. Цикл foreach
Циклы foreach имеют свои собственные свойства. Получить доступ к ним можно таким образом: {$smarty.foreach.foreachname.varname}, где foreachname – это имя цикла, заданное его параметром name, а varname – имя свойства.
Действие оператора практически аналогично оператору if...elseif...else языка PHP.
В выражениях могут использоваться следующие операторы сравнения: eq, ne, neq, gt, lt, lte, le, gte, ge, is even, is odd, is not even, is not odd, not, mod, div by, even by, odd by, ==, !=, >, <, <=, >=. Каждый из них обязательно должен быть отделен от окружающих его значений пробелами. В выражениях можно использовать круглые скобки и вызывать php-функции.
{if $name eq «Вася»}
Добро пожаловать, Вася.
{elseif $name eq «Петя»}
Добро пожаловать, Петя.
{else}
Добро пожаловать. А вы кто?
{/if}
Пример 15.10. Операторы if, elseif, else
{* этот пример не будет работать, поскольку не поставлены пробелы вокруг операторов сравнения *}
{if $name=="Вася" || $name=="Петя"}
...
{/if}
Пример 15.11. Неработающий пример