шаблонизатор smarty

Дуже часто розробкою сайту займаються кілька людей. Наприклад, дизайнер робить HTML-верстку і наповнює сторінки вмістом, а про- грамміст - створює динамічну частину. В цьому випадку дизайнер може аб- солютно не розумітися на програмуванні. Якщо HTML-код розташований всередині PHP-коду, то це стане серйозною перешкодою для роботи дизайнера.

При використанні шаблонизатор HTML-код відділяється від PHP-коду і розташовується в окремому файлі у вигляді шаблону. У цьому випадку дизайнери отримують чистий HTML-код з невеликими вкрапленнями виду

У цьому розділі ми розглянемо базові можливості шаблонізатора Smarty, який дозволяє не тільки відокремити HTML-код від PHP-коду, але і управ лять кешуванням результатів обробки шаблону.

5.32.1. Встановлення та налаштування

2.6.26.zip і розпаковуємо його в поточну папку. З цього архіву нам пона- добится папка libs. Перейменовуємо її в smarty і копіюємо в C: \ Apache2. Таким чином, файл Smarty.class.php повинен бути розташований в C: \ Apache2 \ smarty. Шлях до цієї папці слід вказати всередині скрипта в кон- Стант SMARTY_DIR:

В C: \ Apache2 \ smarty створюємо каталог site1, а всередині нього чотири папки:

templates - тут будемо розміщувати створювані шаблони;

templates_c - при першому завантаженні шаблону він автоматично преобразу- ється в відповідний PHP-код, який зберігається в цій папці. PHP-код створюється тільки один раз при першому запуску, а також після зміни поточного шаблону. Кожен наступний запуск скрипта, ис котрий лікує шаблон, буде приводити до виконання PHP-коду, а не но- вої компіляції шаблону. Змінювати файли з цієї папки вручну не слід;

configs - для файлів з глобальними змінними. Файли з цієї папки слід завантажувати всередині шаблону за допомогою інструкції;

cache - для кешованих сторінок.

Місцезнаходження цих папок задається за допомогою властивостей template_dir, compile_dir, config_dir і cache_dir відповідно. Щоб в кожному скрипті не вказувати шлях, створимо новий клас, що успадковує всі властивості і методи класу Smarty, а також визначає місце розташування папок (лис- тинг 5.75).

Лістинг 5.75. Вміст файлу MySmarty.php

define ( 'SMARTY_DIR', 'C: / Apache2 / smarty /'); require_once (SMARTY_DIR. 'Smarty.class.php'); class MySmarty extends Smarty

function MySmarty ()

Цей файл ми будемо підключати у всіх скриптах. Розмістити файл необ димо в одній папці з скриптом або в одному з каталогів, зазначених в ди- директиви include_path.

Тепер перевіримо Smarty на працездатність. Для цього в папці C: \ Apache2 \ smarty \ site1 \ templates створюємо файл index.tpl і додаємо в нього код з лістингу 5.76.

Лістинг 5.76. Вміст шаблона C: \ Apache2 \ smarty \ site1 \ templates \ index.tpl