потому что псевдотэги я на лету согу заменять уже отрендеренными результатами. Плюс шаблон выглядит "естественнее".
Про "таблицу-зебру". Ну в любом случае придётся изменять код либо в странице, либо в макросе. И сидеть и ковыряться в коде, перемешанном с хтмл, вроде никак не проще, чем в структурированном коде. Кроме того никто не запрещает написать макрос, который выводит таблицу в зависимости от входных параметров.
Про код валидации: конечно проще засобачить все места, где могут быть проблемы и выкидывать "хню" на страницу, чем корректно обработать ошибку.
container - это контейнер для вложенных шаблонов.
Обьясняю. Пусть мы работаем с шаблоном archive.news.main.tpl
Парсер обрабатывает имя и видит, что данный шаблон имеет родительские шаблоны:
main.tpl->news.main.tpl->archive.news.main.tpl
(нелогично, правда? 8) )
Пример шаблонов
main.tpl
<html>
<body>
[macro]id=menubar;menuid=4763[/macro]
[container]id=C_BODY[/container]
</body>
</html>
news.main.tpl
[C_BODY]
Новости::
[macro]id=news;dir=last[/macro]
[container]id=C_ARCHIVE[/container]
[/C_BODY]
archive.news.main.tpl
[C_ARCHIVE]
Архив новостей:
[macro]id=newsArchive[/macro]
[/C_ARCHIVE]
Процесс процесинга 8) :
парсер проходит 1й шаблон (main)
а) заменяет макрос на меню с ид=4763
б) видит контейнер
.1) сдивигает указатель шаблонов на 1
.2) парсит дочерний шаблон, заменяет макрос на результат
.3) видит контейнер
..1) сдвигает указатель шаблонов на 1
..2) проходит 3й шаблон, сдвигает указатель на -1 и возвращает результат парсинга.
.4) завершение парсинга 2 шаблона, сдвиг указателя на -1 и возврат результата
в) подстановка результата в родительский шаблон
Все, можно выдавать данные.
Ну в общем, спорить не буду, какой шаблон использовать - дело вкуса. Мне нравятся такие 8)