Статья о шаблонах

akd

dive now, work later
Команда форума
ээ .. делюсь мнением. клубу пора брать деньги с тебя, за каждую подпись и каждый подобный пост. :)
 

Absinthe

жожо
Мне все понравилось за исключением последней фразы, которую я считаю ложной.
Если программист не экранирует данные в шаблоне, то это проблема исключительно программиста, организации его работы, привычек и пофесионального уровня. А никак не языка и не технологии.
При чем тут профессиональные уровни, если один инструмент не автоматизирует часть задачи и перекладывает это на программиста, но взамен не дает плюсов?
Я считаю, что автоэкранирование должно быть в шаблонизаторе. Если его нет - то это плохой шаблонизатор, ведь программист или верстальщик могут забыть экранировать переменную.

Может ты считаешь, что у программиста должна быть идеальная память? Сможешь назвать первые 30 цифр числа пи? А сможешь быть уверен, что не ошибется верстальщик, когда будет править шаблон?
 

Фанат

oncle terrible
Команда форума
Манифест любителя ручных правок.
В смысле правки html-a такой сайт ничем не отличается от хомяка на народе. За что, как говорится, боролись - на то и напоролись.

Научиться минимально абстрагировать слои (так, чтобы в момент, когда количество правок становится слишком большим, просто смещать уровень, вынося их выше) аффтар ниасилил.
Поэтому предлагает вносить одни и те же правки в 100500 шаблонов руками.
 

Фанат

oncle terrible
Команда форума
Какое-то нечеловеческое количество повторов.
От всех этих link rel в глазах рябит
 

Absinthe

жожо
Манифест любителя ручных правок.
Офигеть. Я как-то это пропустил.
Он призывает к копипасте.

В любом современном шаблонизаторе есть блоки. Даже на голом PHP они реализованы (в том же ZF).
Которые успешно решают данную проблему не с помощью говнокода.
 

Redjik

Джедай-мастер
Absinthe
то есть ты считаешь, что нужно экранировать все без разбора?
если нет, то на практике я встречался с тем, что экранировать данные приходятся в разы меньше, чем выдавать as is
так что работы получается больше, чтобы на каждый чих указать: "дай-ка мне эти данные без экранирования"

ЗЫ. хотя в xslt это решается на другом уровне, там это работает.
я рассматривал чистый php как шаблонизатор
 

nw

Новичок
В Друпале неплохо решается задача - есть шаблон умолчательный для каждого обработчика, но если возникает необходимость - для конкретного обработчика можно задать свой отдельный темплейт.
Причём не нужно нигде прописывать в коде, система автоматом смотрит наличие файла шаблона (условно говоря имя_обработчика.tpl.php) в папке шаблонов. Естественно операция кешируется и каждый раз папка не сканится.
 

Absinthe

жожо
то есть ты считаешь, что нужно экранировать все без разбора?
Именно.
А для неэкранированных вещей использовать фильтр raw/safe.

Если ты какую-то мелочь пропустишь переэкранированной - то ничего страшного (судя по тому, что оно прошло через тестирование - это реально мелочь).
А если недоэкранируешь - то будет XSS.
 

Фанат

oncle terrible
Команда форума
Redjik
А я на практике встречался с тем, что пешеход в наглую пилит по проезжей части на красный. Причем гораздо чаще добирается до тротуара живым.
Зачем тогда вообще эти светофоры? Давай ходить, как придётся - авось пронесёт.

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

Духовность™

Продвинутый новичок
Он призывает к копипасте.

В любом современном шаблонизаторе есть блоки.
Нет и ещё раз нет. Один обработчик - один шаблон. Это НЕ копипаст. Это идеология - абстрагироваться от вашей глупой идеи наследования. Не должны наследоваться каркасы. В идеале один обработчик, один каркас, один CSS, один JS. Потребовались изменения - изменяем и не паримся над вопросом как поведет себя верстка и как слои CSS себя поведут на странице другого обработчика.

С чего вы вообще взяли что каркасы должны иметь наследование? Должен быть едины стиль сайта, но это прерогатива CSS.
 

Absinthe

жожо
Это НЕ копипаст.
В каком месте это не копипаст? Присутствие блоков кода, которые могут быть вынесены - это самое обычное определение копипаста.

С чего вы вообще взяли что каркасы должны иметь наследование?
Может и не иметь, но решать проблему копипаста.
Есть масса различных вариантов.
 

Фанат

oncle terrible
Команда форума
Спорить здесь не имеет смысла.
Absinthe, ты сделаешь неоценимый вклад в дело неувеличения энтропии, если оставишь эти заведомо безрезультатные попытки.
 

Духовность™

Продвинутый новичок
В каком месте это не копипаст? Присутствие блоков кода, которые могут быть вынесены - это самое обычное определение копипаста.

Может и не иметь, но решать проблему копипаста.
Есть масса различных вариантов.
не надо путать верстку и программирование.
я описал в статье проблему - каркасы меняются.
 

Beavis

Banned
Я ещё слышал что для каждой страницы надо сделать свою копию подключаемых библиотек (jquery и т.д.) и стилей, и всё сложить в отдельную папку
Потому что вдруг надо будет что-то только для одной страницы изменить

я думаю Духовность™ меня поддержит!
 

Духовность™

Продвинутый новичок
не надо утрировать.
я привел аргументы, вы их не привели.
посмотрите на более-менее серьезные проекты и вы увидите, что различия в каркасах очень существенные - в одном три колонки, в другом две, в третьем одна. что и от чего вы наследуете?
 

baev

‹°°¬•
Команда форума
Духовность™, «утрируете» Вы.
У Вас в статье проблема описывается как «очевидная». Кому «очевидная»?
Вот лично мне очевидно, что больше ни у кого подобных проблем не возникает.

различия в каркасах очень существенные - в одном три колонки, в другом две, в третьем одна
— какие, нафиг, «колонки» и «каркасы»? Вы, вообще, в курсе о существовании семантической вёрстки?
 
Сверху