Циклы foreach имеют свои собственные свойства. Получить доступ к ним можно таким образом: {$smarty.foreach.foreachname.varname}, где foreachname - это имя цикла, заданное его параметром name, а varname - имя свойства.
Синтаксис:
{if выражение} блок_действий
{elseif выражение1} блок_действий1
{else} блок_действий2
{/if}
Действие оператора практически аналогично оператору 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}
{* этот пример не будет работать,
поскольку не поставлены
пробелы вокруг операторов сравнения *}
{if $name=='Вася' || $name=='Петя'}
...
{/if}
Теперь, после знакомства с основными конструкциями Smarty, мы можем попытаться решить задачу отображения списка документов. Шаблон списка будет выглядеть следующим образом:
{* Smarty template index.tpl *}
{config_load file='task.conf' }
<html>
<head><title>{#pageTitle#}</title>
</head>
<body>
<ol>
{section name=art loop=$title}
<li><a href='{$fulltext[art]}'>
{$title[art]}</a>
({$author[art]})
<br> <p> {$abstract[art]}
{/section}
</ol>
</body>
</html>
В файле конфигурации task.conf будем хранить название страницы и параметры для доступа к базе данных:
# глобальные переменные
pageTitle = 'List of documents'
[Customer]
pageTitle = 'Список статей'
[Database]
host=localhost
db=book
user=nina
pass=123
Скрипт (index.php), обрабатывающий написанный нами шаблон, может выглядеть таким образом:
Как вы, скорее всего, заметили, программа получилась еще более громоздкой, чем в первых двух случаях, когда использовалась простая замена значений и шаблоны FastTemplate. Действительно, механизм Smarty гораздо более сложен, чем тот же FastTemplate, но зато и более функционален.
Заключение
Итак, в этой лекции было рассказано о том, что такое шаблоны и как их можно использовать при программировании web-приложений на языке PHP. Мы рассмотрели три способа решения задачи отображения сложного списка документов: с помощью функции регулярной замены, с помощью класса шаблонов FastTemplate и с помощью языка шаблонов Smarty. При этом мы познакомились с основными свойствами, методами и функциями классов FastTemplate и Smarty.
Литература
1. Савельева Н.В.