RomikChef имхо, ты не прав на счет удобства шаблолнов, вот маленький простенький примерчик шаблона древовидного меню сайта без js, ничего лишнего кроме html и маркеров в шаблоне
который существенно помогает(упрощает) в работе как вертальщику так и программеру
суть:
из разных частей php кода при определенных условиях успользуется html фрагменты из шаблона для сбоки нужного html
простейшими методами класса
- позволяет переключать шаблоны (хоть 100 различныйх отображений дерева, не требуется писать 100 пхпшных версий, и пытаться упростить вывод html кода различными способами типа $html .= <<
-не нарушается целостность работы пхпшника, если верстальщик запорл шаблон пофиг есть шаблон по-умолчанию, остальные 10 человек делают свои шаблоны одновременно с тобой(только ты правишь пхп)
-пхпшник один(как модуль, меню, выпадающее меню, древрвидное меню... новости форум)
-шаблон понимает любой редактор html, если ручкми впадлу..
-маленький объем..
и даже если на пхп сделать аналог, т.е. вынести хтмл во внешний подключаеммый массив, не получишь такого результата, т.к. например не сможешь так просто включить файл FILE "forms.htm"} т.е. придется писать функцию проверки сущестования и чтения файла как минимум и внедрения в массив, что и является частью шаблонизатора... который может брать массив откуда угодно из файла, БД, просто редактировать html удобнее в файле а не в базе или php массиве...
кусок php кода, как вариант
...
$t->assign(\'DATA\',$ar);
if ($i<$num-1) {
if ($ar[\'haschild\']==1)
$t->parse(treemenu.items.child_node\');
else $t->parse(treemenu.items.nochild_node\');
} else {
if ($ar[\'haschild\']==1)
$t->parse(treemenu.items.child_lastnode\');
else $t->parse(treemenu.items.nochild_lastnode\');
}
$t->parse(treemenu.items\');
...
$t->return(treemenu);
...