| |
обязанности. Вы, наверное, догадались, что я снова имею в виду шабло-
низатор.
Итак, шаблонизатор — это программный код, держащий "под контролем" все файлы
на нашем сайте. Ни одно обращение к странице, ни один запуск сценария не может
пройти без его непосредственного участия. В то же время шаблонизатор
"маскирует"
себя, создавая у пользователя впечатление, будто бы его и нет. Этим он похож на
ге-
нератор данных в трехуровневой модели построения сценариев.
Часть V. Приемы программирования на PHP 434
Теперь вы почувствовали, почему я применил здесь аналогию с богом? Ведь
бог как раз удовлетворяет тем описаниям, которые даны в предыдущем абза-
це!
Впрочем, идеология "вездесущего" кода не является для нас новой: нечто похожее
мы
уже рассматривали в главе 29, правда, с целью гарантированного подключения биб-
лиотекаря ко всем сценариям сайта. В рамках реализуемой "религии" мы применим
точно такой же подход, только вместо библиотекаря будет подключаться и
запускать-
ся шаблонизатор.
Описание шаблонизатора
Сформулируем, что должен уметь делать наш будущий шаблонизатор. Конечно, все,
что мы реализуем, будет лишь самым основным, что мы хотели бы получить от этой
системы. В то же время в описанную концепцию чрезвычайно легко добавлять новые
возможности (так уж она разрабатывалась). Для этого практически не придется
пере-
писывать имеющийся код, останется лишь вставить то, что нам нужно.
Вставка страниц в единый шаблон
Раньше главный текстовый блок страницы (text) запрашивал подключения к себе
двух частей шаблона — footer и header. Но, раз мы в очередной раз поменяли
места-
ми "поставщика" данных и "исполнителя", посмотрим, нельзя ли пойти дальше. Да-
вайте поиграем в такую словесную игру: "обработаем" первое предложение этого
аб-
заца, переставив в нем понятия, соответствующие "исполнителю" и "поставщику".
Получим буквально: шаблон запрашивает подключение к себе главного текстового
блока страницы. Эврика, это и есть главная задача шаблонизатора!
Не хотите ли взглянуть с этой новой позиции на шаблон страницы? Тогда изучите
листинг 30.10.
Листинг 30.10. Свежий взгляд на шаблон страницы: /templ/main.tmpl
=Blk("Title"title>
Добрый день.
| Карта раздела: . . . |
=Blk("Text")?> |
Глава 30. Код и шаблон страницы 435
Не обращайте пока внимания на команду . Ее смысл
поясняется немного ниже.
Мы видим, что ненужное и опасное "расщепление" шаблона на два файла ушло в
прошлое, а мы опять вернулись к простой модели. Будем хранить этот шаблон в
фай-
ле /templ/main.tmpl.
Но позвольте, откуда же возьмется блок с именем Text, который выводится в сере-
дине этого шаблона? Вот задачу по его получению и возьмет на себя шаблонизатор.
Предположим, пользователь обратился по адресу /news/weekly/today.html. Шаб-
лонизатор, как я уже упоминал, "перехватит" это обращение и "возьмет" текстовый
блок из файла today.html, расположенного в каталоге /news/weekly
|
|