Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
обязанности. Вы, наверное, догадались, что я снова имею в виду шабло- 

низатор. 
Итак, шаблонизатор — это программный код, держащий "под контролем" все файлы 
на нашем сайте. Ни одно обращение к странице, ни один запуск сценария не может 
пройти без его непосредственного участия. В то же время шаблонизатор 
"маскирует" 
себя, создавая у пользователя впечатление, будто бы его и нет. Этим он похож на 
ге- 
нератор данных в трехуровневой модели построения сценариев. 

Часть V. Приемы программирования на PHP 434 
Теперь вы почувствовали, почему я применил здесь аналогию с богом? Ведь 
бог как раз удовлетворяет тем описаниям, которые даны в предыдущем абза- 
це! 
Впрочем, идеология "вездесущего" кода не является для нас новой: нечто похожее 
мы 
уже рассматривали в главе 29, правда, с целью гарантированного подключения биб- 

лиотекаря ко всем сценариям сайта. В рамках реализуемой "религии" мы применим 
точно такой же подход, только вместо библиотекаря будет подключаться и 
запускать- 
ся шаблонизатор. 
Описание шаблонизатора 
Сформулируем, что должен уметь делать наш будущий шаблонизатор. Конечно, все, 
что мы реализуем, будет лишь самым основным, что мы хотели бы получить от этой 
системы. В то же время в описанную концепцию чрезвычайно легко добавлять новые 
возможности (так уж она разрабатывалась). Для этого практически не придется 
пере- 
писывать имеющийся код, останется лишь вставить то, что нам нужно. 
Вставка страниц в единый шаблон 
Раньше главный текстовый блок страницы (text) запрашивал подключения к себе 
двух частей шаблона — footer и header. Но, раз мы в очередной раз поменяли 
места- 
ми "поставщика" данных и "исполнителя", посмотрим, нельзя ли пойти дальше. Да- 
вайте поиграем в такую словесную игру: "обработаем" первое предложение этого 
аб- 
заца, переставив в нем понятия, соответствующие "исполнителю" и "поставщику". 
Получим буквально: шаблон запрашивает подключение к себе главного текстового 
блока страницы. Эврика, это и есть главная задача шаблонизатора! 
Не хотите ли взглянуть с этой новой позиции на шаблон страницы? Тогда изучите 
листинг 30.10. 
Листинг 30.10. Свежий взгляд на шаблон страницы: /templ/main.tmpl 
 
<?=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> 

Глава 30. Код и шаблон страницы 435 
Не обращайте пока внимания на команду <?Block("Output"?>. Ее смысл 
поясняется немного ниже. 
Мы видим, что ненужное и опасное "расщепление" шаблона на два файла ушло в 
прошлое, а мы опять вернулись к простой модели. Будем хранить этот шаблон в 
фай- 
ле /templ/main.tmpl. 
Но позвольте, откуда же возьмется блок с именем Text, который выводится в сере- 

дине этого шаблона? Вот задачу по его получению и возьмет на себя шаблонизатор. 

Предположим, пользователь обратился по адресу /news/weekly/today.html. Шаб- 
лонизатор, как я уже упоминал, "перехватит" это обращение и "возьмет" текстовый 

блок из файла today.html, расположенного в каталоге /news/weekly</pre>
		</td>
		<td align="left" class="row2s"  width="5%"> </td>
	</tr>
    <tr><td class="row3" align="left"  width="5%"><a href="/comp/.view-Dm.Koterov.Samou4itel_PHP4.txt.221.html"><img border="0" src="/tpl/l.gif" alt="<<-"></a></td><td class="row3s" align="center" width="20%" valign="middle"><a href="/comp/.view-Dm.Koterov.Samou4itel_PHP4.txt.full.html">[Весь Текст]</a></td><td class="row3s" align="center" width="70%" valign="middle"><br><form action="" method="get">Страница: <input type="text" size="4" name="pg" value="223"> из 287 <input type="submit" value="Открыть"></form></td><td class="row3s" align="center" width="20%" valign="middle"> </td><td class="row3" align="right" width="5%"><a href="/comp/.view-Dm.Koterov.Samou4itel_PHP4.txt.223.html"><img border="0" src="/tpl/r.gif" alt="<<-"></a></td></tr></table>	

</body>

</html>