> А смысл? Шаблоны лежат в базе и редактируются (доступные части) удаленно через web интерфейс - девочки сидят в офисе и иногда меняют контент таким образом. Все просто, эффективно и удобно... Минимум забот и программистам и дизайнеру и контент провайдерам.
Вы бы ещё и движок в базу сложили, чего уж там. Минимум забот.
> Дятел долбит. Если дятел не долбит - значит, это плохой, негодный дятел. Если разработчик - дятел, то он и в Smarty, и в XSLT такой срач разведёт, что мама не горюй.
Т.е. ты хочешь сказать, что большинство разработчиков php-проектов - дятлы? :))
кроме чтения настроек (отображения, подгрузки css, которая, кстати, определяется в шаблоне) из php там только дергание модулей для вставки данных, можно оставить и только подгрузку модулей (например прописывая настройки в html код и указывая абсолютные пути), причем подгружаются не конкретные модули, а абстракции размещения (left,right) а уж что запихнуть в эти размещения задается из административной панели. Не надо топать ногами если вы увидели html тег в php коде, просто это короче чем создавать класс-виджет для тега, ктомуже на эти элементы все равно натягивается css, заданный шаблонизатором и код перековыривать при изменении дизайна не надо. Все это ничуть не менее изящно, чем добавлять третью(?) сущность языка шаблонизатора. Разделение вполне на уровне современного GUI программирования. Учтите, что в десктопных приложениях дизайн не имеет такого значения как для web(мордах, сайт - и лицо и средство рекламы и приложение для работы) и причесать всех к стандартной GUI-библиотеке обеспечивающей разделение без ущерба для функционала не получится.
> Хватит передергивать! Если у Вас шаблоны не сложнее <?=$foo?>, это Ваше счастье. Если сайт более менее сложный будет кошмарная мешанина из крайне плохо оптимизирующихся <? foreach .... ?> и <? if .... ?>.
Отделяйте мух от котлет. Добавьте <? include(...) ?>. Не пользуйтесь табличной вёрсткой. Или вы хотите всё и сразу?
Что конкретно не понравилось :) По пунктам. По сравнению с тем что было - гораздо читабельнее и логичнее. Там всего этих выражений немного, но их с головой хватает на всё, учитывая что можно вызывать питоновские скрипты или писать на питоне (защищенном) one-liner'ы прям в шаблоне.
tal:attributes - dynamically change element attributes. tal:define - define variables. tal:condition - test conditions. tal:content - replace the content of an element. tal:omit-tag - remove an element, leaving the content of the element. tal:on-error - handle errors. tal:repeat - repeat an element. tal:replace - replace the content of an element and remove the element leaving the content.
плюс мега удобная вещь METAL (юзается точно также): metal:define-macro - Define a macro. metal:use-macro - Use a macro. metal:define-slot - Define a macro customization point. metal:fill-slot - Customize a macro.
см. мой недавний ответ про юмлу в код шаблона можно вставлять только блоки для компонентов а уж иф или форич решит модуль, который управляется девочками выглядит намного проще и понятнее хитрых шаблонизаторов и xslt. Keep it simple, Lucke
Что конкретно не понравилось :) По пунктам. По сравнению с тем что было - гораздо
читабельнее и логичнее.
Там всего этих выражений немного, но их с головой хватает на всё, учитывая что можно вызывать
питоновские скрипты или писать на питоне (защищенном) one-liner'ы прям в шаблоне.
tal:attributes - dynamically change element attributes.
tal:define - define variables.
tal:condition - test conditions.
tal:content - replace the content of an element.
tal:omit-tag - remove an element, leaving the content of the element.
tal:on-error - handle errors.
tal:repeat - repeat an element.
tal:replace - replace the content of an element and remove the element leaving the content.
плюс мега удобная вещь METAL (юзается точно также):
metal:define-macro - Define a macro.
metal:use-macro - Use a macro.
metal:define-slot - Define a macro customization point.
metal:fill-slot - Customize a macro.
Не поленитесь, прочтите http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition/AppendixC.stx
> > Отделяйте мух от котлет.
> Вот именно. Отделяйте исполнимый код от представления
Отделяйте руки от задницы.
> > Добавьте <? include(...) ?>.
> 1) Include небезопасен.
Ну чем, чем именно?
> 2) Как использование Include поможет упростить конструкции <? foreach .... ?> и <? if .... ?>.
Если у вас пиццот таких конструкций - разложите их в разные файлы.
> > Не пользуйтесь табличной вёрсткой. Или вы хотите всё и сразу?
> Причем тут табличная верстка? Сверстать можно на чем угодно, хоть на div.
Табличная вёрстка - это перегруженный оформлением код. Нонче оформление принято класть в CSS, а в XHTML писать только контент.
> Для тех хостингов, где нельзя грузить свой extension для mod_PHP, можно: - использовать Smarty - поставить свой fastcgi сервер - поставить php-cgi версию
Надо просто сразу использовать smarty, не такой уж он и тяжёлый. А если просто страничка васи пупкина то можно обойтись вообще без него. Приделыват костыли в виде шаблонного движка на C/C++ это изврат (ИМХО). Пример по поводу gd не катит, т.к. у обработки изображений и шаблонов несколько разные требования к производительности.
А на много хостингов можно поставить fastcgi сервер? Типа позвонить им и попросить? А там где есть свою версию php не так просто поставить.
stellar, на протяжении многих постов вы уже доказали совершенное владение конструкциями <? foreach .... ?> и <? if .... ?>.
Наболевшее? Или не давали давно?
> Всё на div и css? Попробуйте хоть раз, довольно большой и сложный дизайн целиком на css и div сверстать. Будет весело.
я думаю имелось ввиду что основой является не <table> с кучей вложенных, а совокупность div'ов, так действительно сейчас очень много где сделано (особенно с нашествием аякса) совсем без таблиц конечно сложно, данные опять же выводить
Тем, что он выполняется в контексте PHP, а не как шаблон с ограниченной функциональностью.
>Пример по поводу gd не катит, т.к. у обработки изображений и шаблонов несколько разные требования к производительности.
Конечно-конечно. Генерировать _динамический_ HTML можно медленно, это же совершенно очевидно. Спуститесь с небес на землю, и потрудитесь посчитать, сколько раз в типичном вебпроекте на один запрос генерируется HTML, а сколько раз - картинка.
>А на много хостингов можно поставить fastcgi сервер?
Везде, где есть шелл и не зарезаны до невозможности лимиты. А там где есть свою версию php не так просто поставить. Например, на .masterhost - можно. Ведущий хостер РУнета...
Удобно. Все от всего отделено. То, что вы все здесь, олухи, и хотели. Сказали вам страшное слово, так сразу: "нееее... нам это не надо... как же мы тут какашками кидаться тогда будем?"
1. внешний вид всех элементов class="header" будет задаваться в таблице стилей, можно конечно переопределить h1 в тойже таблице, но это костыль похлеще будет
2. к диву можно назначить id и активно этим пользоваться из джаваскрипта
> 1. внешний вид всех элементов class="header" будет задаваться в таблице стилей, можно конечно переопределить h1 в тойже таблице, но это костыль похлеще будет
Значит, div.header { color: red } - это нормально, а h1 { color: red } - это костыль? Дайте телефон вашего дилера.
> 2. к диву можно назначить id и активно этим пользоваться из джаваскрипта
Что мешает id повесить на любой другой элемент, кроме div'а? Кстати, не document.getElementByClassId'ом единым можно добраться до элементов страницы.
> Тем, что он выполняется в контексте PHP, а не как шаблон с ограниченной функциональностью.
Это писал не я =)
> Конечно-конечно. Генерировать _динамический_ HTML можно медленно, это же совершенно очевидно. Спуститесь с небес на землю, и потрудитесь посчитать, сколько раз в типичном вебпроекте на один запрос генерируется HTML, а сколько раз - картинка.
Узнайте про PEAR Cache, и в частности про Pear CacheRequest. Это совсем радикально. А есть ещё смарти, который на каждый {include file=$_content_file} генерирует _отдельный_ кеш, что мешает всю динамику подключать через include file, т.е. тот же смарти будет только динамику заново обрабатываь.
> Везде, где есть шелл и не зарезаны до невозможности лимиты. А там где есть свою версию php не так просто поставить. Например, на .masterhost - можно. Ведущий хостер РУнета...
Впервые встречаю вменяемого программиста на пхп. Выражаю свою почтение. Возможно вам стоит задуматься, что ЛОР это не то место, где стоит кому-то что-то доказывать - бесполезно.
Ага, и верстальщика надо учить xls и т.д. Особенно когда надо будет частично вёрстку сменить на поддреживаемом сайте. Вместо того что бы открыть шаблон смарти и всё по быстрому подправить.
а innerHTML у такого id'шнутого h1 можно переписать, даже если можно то выглядит это все как то коряво, есть div как аналог холста или лейбла в GUI фреймворках, зачем городить переопределения тегов ?
Тем, что ты ничего не знаешь, но поумничать хочется.
Ну на тебе поджопник:
Верстаешь ты в XML - считай нативный текст вбиваешь между двумя тегами, которые тебе, дураку, редактор не показывает.
Цвета своих кнопочек и остальную порнографию - в других тегах.
А xsl тебе знать не надо, да и не потянешь.