Smarty-шаблоны

Smarty - это язык шаблонов для PHP. Написанный на PHP, он является практически отдельным языком программирования. Полную информацию по Smarty можно получить на официальном сайте www.smarty.net. Переменные, а также другие конструкции Smarty, вставляются в html-код шаблона с помощью фигурных скобок:

<td>{$dat[1]}</td>

По структуре код, написанный на Smarty, напоминает альтернативный синтаксис php-кода, отличие – в том, что переменные и конструкции вставляются в html-код теперь не с помощью php-тегов, а с помощью фигурных скобок.

Рассмотрим несколько простых конструкций Smarty. Прежде всего - это цикл foreach, который мы применяем для перебора записей многозаписного блока. Приведем его расширенный вариант - цикл с ключем.

foreach

{foreach from=$tab key=i item=dat}
    {$dat.edit}
    Фамилия {$dat[1]} упоминается {$tdat[$i]} раз.
{/foreach}
Обратите внимание на то, что ассоциативные массивы в Smarty записываются нестандартным образом (не как $dat['edit'], а как $dat.edit).

assign (присваивание значения)

Оператор присваивания выглядит несколько громоздким, по сравнению с PHP. С помощью этого оператора можно производить также несложные арифметические вычисления.

{assign var="aa"  value=10}
{assign var="bb"  value=$aa+5}
{$bb}  {* Данный пример выведет: 15 *}

if...else

{if $dat.edit} вы можете редактировать этот блок
{else} вы не можете редактировать этот блок
{/if}

Пример (полосатая таблица)
Это пример, в котором используются все три конструкции. Здесь цвет строк таблицы чередуется между белым (по умолчанию) и серым (#dddddd):

{assign var='toggle' value=1}
<table>
{foreach from=$tab item=dat}
{* Если переменная $toggle положительна, то - серый фон *}
<tr{if $toggle>0} bgcolor="#dddddd"{/if}>
    <td>{$dat.edit}</td>
    <td>{$dat[1]}</td>
    <td>{$dat[2]}</td>
</tr>
 {* Изменить знак переменной $toggle на противоположный  *}
{assign var='toggle' value=$toggle*-1}
{/foreach}
</table>