Давайте немного поразмышляем..
Пока конкретно о такой вещи, как шаблонизация. Для кого тема скучная, а по мне так наоборот..
Много чего я читал на просторах и-нета про шаблоны и шаблонизацию. говорят, что нужно, просто обязательно отделять форму от содержания для того, чтобы верстальщикам было легче верстать, а пэхэпэтчикам кодить))
Однако посмотрите каким образом всё это реализовано в существующих шаблонизаторах. Взять тот же движок exbb. Посмотрите там: отделена ли там сущность от формы? Да любой шаблонизатор возьмите..
Вот часть кода из одного шаблона exbb:
CODE:<td align="center">{$GLOBALS['fm']->_Counters}<br />
Как хорошо видно переменные php прекрасно уживаются в шаблоне вместе с html тегами. Казалось бы - а куда деваться? Везде так.. Так-то так, да можно и по другому..
Откройте этот шаблон в любом редакторе исходного кода и вы не увидите никакой подсветки html. Можно сказать: ну создай свои темы подсветки для файлов типа .tpl Дык ведь даже это дело не каждому по плечу.
Итак две проблемы налицо:
1) Отсутствует подсветка тэгов в стандартных общедоступных редакторах.
2) Код html по прежнему перемешан с кодом php.
Предлагаю совершенно другой подход. Во-всяком случае я такого на просторах и-нета ещё не встречал. Меня интересует мнение знакомых с данной проблематикой людей, да и просто заинтересованных лиц. Прошу высказать свои мнения и соображения по данному вопросу.
Суть предложения.
В файле с шаблоном не должно быть
вообще никаких переменных, условий и вообще НИКАКОГО кода php! Там должен находится только ЧИСТЫЙ html!
Скажете - утопия, как вообще возможно в него что-либо вставлять? Отвечу всё довольно просто реализуется, и мечта о разделении формы и содержания может быть осуществлена хотя бы в новом движке.
Итак, например имеем файл tpl.php с нашим шаблоном. Заметьте расширение - не tpl, а php! Это важный момент! Реализуется он так:
CODE:<?php if (!defined('EXBB_OK')){die('Access denied!');}?>
<table width="100%" id="logostrip" cellspacing="0" cellpadding="0"><tr><td><a href="index.php" title="
"><img src="./templates/
/im/logo.gif" alt="
" width="207" height="52" border="0" /></a></td><td valign="bottom" align="right"><a href="index.php" style="margin-right:20px;color:#ffffff">
</a></td></tr></table>
Это из шаблона этого движка, но реализованного по своему.
Каждая часть на своей строке. В редакторах подобный html отлично подсвечивается. Никакого php и в помине..
Теперь как происходит вставка. Имеем например функцию:
CODE:<?php if (!defined('EXBB_OK')){die('Access denied!');}
function exbb_showLogoStrip()
{
global $Config, $ContentBuf, $TemplatesPath;
require_once($TemplatesPath.'tpl.php');
$tpl=exbb_getArr($TemplatesPath.'tpl.php');
$ContentBuf.=$tpl[0].$Config[1].$tpl[1].$Config[4].$tpl[2].$Config[1].$tpl[3].$Config[1].$tpl[4];
}
?>
Как видим и здесь только PHP и никакого html. Итак код и данные полностью разделены!
Что это еще даёт?
А это даёт то, что теперь сторонний код может с лёгкостью ИЗМЕНЯТЬ шаблоны! Иногда прямо "на лету". Ещё этот способ в разы быстрее, чем в существующих шаблонизаторах..
Когда эта идея впервые пришла мне в голову, то я сразу понял: так оно и должно быть! И никак иначе.. А вы как думаете?