Раньше главный текстовый блок страницы (text) запрашивал подключения к себе двух частей шаблона— footer и header. Но, раз мы в очередной раз поменяли местами "поставщика" данных и "исполнителя", посмотрим, нельзя ли пойти дальше. Давайте поиграем в такую словесную игру: "обработаем" первое предложение этого абзаца, переставив в нем понятия, соответствующие "исполнителю" и "поставщику". Получим буквально: шаблон запрашивает подключение к себе главного текстового блока страницы. Эврика, это и есть главная задача шаблонизатора!
Не хотите ли взглянуть с этой новой позиции на шаблон страницы? Тогда изучите листинг 30.10.
Листинг 30.10. Свежий взгляд на шаблон страницы: /templ/main.tmpl
<?Block("Output"?>
<html><head><title><?=Blk("Title"title></head>
<body bgcolor=white>
<h1>Добрый день.</h1>
<table><tr>
<td width=20%>Карта раздела: . . .</td>
<td width=80%><?=Blk("Text")?></td>
</tr></table>
</body></html>
Не обращайте пока внимания на команду <?Block("Output"?>. Ее смысл поясняется немного ниже.
Мы видим, что ненужное и опасное "расщепление" шаблона на два файла ушло в прошлое, а мы опять вернулись к простой модели. Будем хранить этот шаблон в файле /templ/main.tmpl.
Но позвольте, откуда же возьмется блок с именем Text, который выводится в середине этого шаблона? Вот задачу по его получению и возьмет на себя шаблонизатор. Предположим, пользователь обратился по адресу /news/weekly/today.html. Шаблонизатор, как я уже упоминал, "перехватит" это обращение и "возьмет"
текстовый блок из файла today.html, расположенного в каталоге /news/weekly. Затем он передаст управление шаблону, который вставит этот текст в нужное место страницы и отправит последнюю браузеру.