К оглавлению
Справочник: Структура Базы Данных
Справочник: Структура Модуля
Справочник: Структура Шаблона
Справочник: Структура Компонента
Справочник: Библиотека jQuerry
Справочник: API InstansCMS - руководство для разработчиков
Smarty - это компилирующий обработчик шаблонов для PHP. Говоря более четко, он предоставляет один из инструментов, которые позволяет добиться отделения прикладной логики и данных от представления. Это очень удобно в ситуациях, когда программист и верстальщик шаблона - различные люди.
Например, скажем, вы создаете страницу, которая показывает газетную статью.
Одно из предназначений Smarty - это отделение логики приложения от представления.
Одна из уникальных возможностей Smarty - компилирование шаблонов. Это означает, что Smarty читает файлы шаблонов и создает PHP-код на их основе. Код создаётся один раз и потом только выполняется. Поэтому нет необходимости в медленной обработке файл шаблона для каждого запроса. Каждый шаблон может пользоваться всеми преимуществами таких компиляторов PHP и кэшируюших решений, как eAccelerator, ionCube, mmCache, Zend Accelerator и прочих.
Допустим, нам необходимо вывести из Базы Данных десять новостей. Создаем два файла:
<?php // подключаем класс Smarty require_once('smarty/Smarty.class.php'); // Создаем объект класса $smarty = new Smarty(); // Устанавливаем папки шаблонов // 'templates' – каталог, в котором хранятся шаблоны // 'templates_c' - туда Smarty сохраняет скомпилированные шаблоны $smarty->template_dir = 'templates'; $smarty->compile_dir = 'templates_c'; // Получение данных их БД (в виде ассоциативного массива) $news = $DB->query("SELECT * FROM news ORDER BY id LIMIT 0,10"); // передаем массив в шаблонизатор $smarty->assign('news', $news); /* Допустим что наша задача была в простом выводе данных в шаблон, что мы уже и сделали, и это конечный этап – вызываем метод display() класса smarty, который выводит, передаёт данные в шаблон, перекомпилирует (если были изменения) и выводит контент. Методу передается имя файла шаблона, в котором как предполагается был обработан нужным образом массив news */ $smarty->display('news.tpl'); ?>
Теперь рассмотрим непосредственно файл шаблона news.tpl. Фактически это обычный html, со вставками переменных и конструкций циклов. Все переменные заключены в фигурные скобки.
<html> {foreach from=$news item=item} Заголовок: {$item.title} Текст новости: {item.description} <a href="index.php?id={$item.id}" mce_href="index.php?id={$item.id}">Подробнее...</a> {/foreach} </html>
Вот собственно и все. Это рабочий пример, который будет выводить 10 извлечённых нами новостей из базы данных. Может показаться, что в данном примере можно было бы обойтись обычным php с html-вставками. Но в большом проекте шаблонизатор заметно сокращает время, потраченое на изготовление шаблона.
Если вдруг появится необходимость использовать php код прямо в шаблоне, то помещаем в шаблоне блок {php}{/php} – между тегами php код, без параметров .
Ещё существует проблема, когда в коде шаблона вставлены блоки java script, некоторые его операторы, в частности if, компилятор smarty будет рассматривать как операторы smarty. Поэтому JS код лучше выносить в отдельные файлы, либо вокруг кода ставить оператор {literal}{/literal}, внутри этого оператора компилятор не будет искать другие операторы smarty.
Подробный учебник online по Smarty можно прочесть здесь
Автор: Виталий Колесник, источник - здесь
Записала feba7