автономная работа верстальщика и программиста Дмитрий Фомин Спецвыпуск: Хакер, номер #067, стр. 067-016-1 технический директор Дифокус (www.difocus.ru) Сейчас большую популярность в веб программировании завоевали, так называемые, шаблонизаторы. Они позволяют добиться отделения прикладной логики и данных от логики представления. Это очень удобно в ситуациях, когда программист и верстальщик шаблона — различные люди. Одна из таких систем — Smarty. Это большая и мощная система по обработке шаблонов, наличие многочисленных плагинов и возможность писать их самому. Некоторые называют Smarty лучшим шаблонизатором, написанным на PHP. [логика] Шаблоны могут содержать в себе логику, но лишь при условии, что эта логика необходима для правильного представления данных. Такие задачи, как подключение других шаблонов, чередующаяся окраска строчек в таблице, приведение букв к верхнему регистру, циклический проход по массиву для его отображения и т.д. — все это является примером логики представления. Но Smarty не ограничивает в разделении логики приложения и представления. Smarty не видит разницы между этими вещами, так что помещать или не помещать логику приложения в шаблоны — решать тебе. Если же ты считаешь, что в шаблоне вообще не должно быть логики, ты можешь ограничиться использованием только текста и переменных. [директивы] Если коротко, Smarty может обработать файл-шаблон со специальными директивами. ЛИСТИНГ Здраствуйте, {$name}! Это письмо отправлено в {$time}. По умолчанию переменные в Smarty заключаются в фигурные скобки {}, а у самой переменной, как и принято в PHP, ставится знак доллара. Сначала выполняется скрипт. В итоге получается некий набор переменных, которые хочется показать пользователю, в нашем случае это $name и $time. Для того, чтобы воспользоваться Smarty, нужно прежде всего иметь сам Smarty, который можно скачать отсюда — http://smarty.php.net. [практика] ЛИСТИНГ интерфейс управления объектом Smarty <? define('SMARTY_DIR', 'smarty/' ); require_once(SMARTY_DIR . 'Smarty.class.php'); //работает наша логика $name = ‘Дима’; $time = date("F j, Y, g:i a"); // создание объекта Smarty, обычно просто создают класс для его использования $smarty = new Smarty; //конфигурационные файлы $smarty->config_dir = './cfg'; //каталог с шаблонами $smarty->template_dir = './tmpl'; //в этой директории будет храниться кеш $smarty->compile_dir = './tmplс; $smarty->compile_check = TRUE; $smarty->debugging = FALSE; $smarty->assign('name', $name); $smarty->assign('time', $time); $smarty->display('mail.tpl'); ?> ЛИСТИНГ класс для создания нового объекта <?php class tmpl{ var $smarty; var $template; function tmpl(){ global $CFG; $this->smarty = new Smarty; $this->smarty->template_dir = $CFG['templates']; $this->smarty->compile_dir = $CFG['templatesc']; $this->smarty->config_dir = $CFG['cfgs']; $this->smarty->cache_dir = $CFG['templates_cache']; $this->smarty->compile_check = true; $this->smarty->caching = false; $this->smarty->debugging = __SMARTY_DEBUG; } function setTmpl($tmpl){ if($tmpl == '') return 1; $this->template = $tmpl; |