Шаблоны SmartySmarty - один из действующих проектов PHP, его официальный сайт - http://smarty.php.net. Там можно скачать как сам набор классов Smarty, так и документацию к нему. Этот набор классов для обработки шаблонов - гораздо более мощный и функциональный, чем FastTemplate.Чем отличается Smarty от классов шаблонов типа FastTemplate? Прежде всего, он не отделяет полностью логику от содержания. Логика, касающаяся отображения данных, может присутствовать в шаблоне, считают разработчики Smarty. Поэтому в
шаблоне Smarty могут быть условные операторы, операторы вставки файлов, операторы изменения переменных, циклы и т.п. Другая особенность Smarty - это компиляция шаблонов. Шаблоны переводятся в php-код, и интерпретатор PHP производит все необходимые действия по подстановке значений. Для ускорения работы скомпилированные шаблоны кэшируются. Рассмотрим некоторые основные конструкции механизма шаблонов Smarty. УстановкаПервое, с чего мы начнем, - это установка Smarty. Здесь все не так просто, как с FastTemplate. Smarty состоит не из одного php-файла с описанием класса, а из целого набора различных файлов-библиотек. Для того чтобы работать с шаблонами Smarty, нужно сделать эти библиотеки доступными для всех ваших программ. Находятся они в каталоге /libs/ дистрибутива Smarty. Файл, в котором содержится определение самого класса Smarty, называется Smarty.class.php. Чтобы проверить, доступны ли библиотеки класса
Smarty, нужно написать такой скрипт:
<?
require('Smarty.class.php');
// подключаем файл с
// описанием класса Smarty
$smarty = new Smarty;
// создаем экземпляр класса Smarty
?>
Если при его исполнении появилась ошибка, то нужно попробовать один из перечисленных ниже вариантов. - Указать полный путь до файла описания класса.
<?
// подключаем файл с описанием класса
require('c:/users/my/Smarty/libs/
Smarty.class.php');
$smarty = new Smarty;
// создаем экземпляр класса Smarty
?>
- Добавить директорию, где содержатся библиотеки, в include_path (в этом случае код менять не нужно).
- Установить константу SMARTY_DIR.
<?
define("SMARTY_DIR",
"c:/users/my/Smarty/libs/");
require(SMARTY_DIR."Smarty.class.php");
$smarty = new Smarty;
?>
Теперь, после того как мы убедились, что библиотеки будут найдены, нужно создать директории, необходимые для работы Smarty, по умолчанию имеющие такие имена: - templates - директория, где мы будем хранить созданные шаблоны;
- templates_c - директория, где Smarty будет хранить скомпилированные шаблоны;
- configs - директория для хранения конфигурационных файлов;
- cache - директория для кэша.
Эти имена задаются свойствами $template_dir, $compile_dir, $config_dir, $cache_dir класса Smarty, поэтому их можно переопределить. Рекомендуется использовать различные наборы директорий для каждого приложения, работающего с шаблонами Smarty. Доступ к перечисленным директориям осуществляется библиотекой Smarty и никогда не выполняется напрямую через web-браузер. Поэтому, чтобы избежать проблем с безопасностью, лучше всего разместить эти
директории там, куда нет доступа через www. Создадим перечисленные Smarty директории по адресу c:/smarty_dirs/book/. Заметим, что прочитать отсюда данные через браузер нельзя. Пусть наша программа (или приложение) находится по адресу /~my/tasks/book/. Для директорий $compile_dir и $cache_dir Smarty потребуется доступ на запись, так что нужно установить соответствующие им права для сетевого пользователя, с которым ваш сервер работает по умолчанию (обычно это www или nobody). Чтобы протестировать сделанные настройки, создадим простой шаблон и программу, обрабатывающую его с использованием механизма Smarty. index.tpl (является Smarty шаблоном и находится в директории шаблонов c:/smarty_dirs/book/templates/)
{* Шаблон Smarty *}
Привет, {$name}!
index.php (является кодом нашей программы и находится в директории /~my/tasks/book/ или, что то же самое, в директории c:/users/my/tasks/book/)
Листинг
15.4.2.
index.php
(html,
txt)
В результате должны получить: Все настройки, необходимые для работы нашего приложения, можно вынести в отдельный файл и организовать их в качестве расширения класса Smarty. Далее более подробно рассмотрим, из каких элементов могут состоять шаблоны Smarty и как их обрабатывать внутри php-скрипта. Начнем с синтаксиса шаблонов.
|