![]() |
Полное и грамотное разделение оформления и содержания, можно добиться только правильной организацией процесса разработки. И тут уже сугубо по барабану, какую технологию вы используйте – да хоть ручками вставляйте. Главное – чётко, по полочкам разделить обязанности всех участников процесса. Дизайнер рисует, на этом его круг обязанностей заканчивается окончательно и бесповоротно. Ведущий программист, проектирует бизнес логику, раздаёт задания программистам и координирует процесс производства продукта. Программист занимается реализацией заданной бизнес логики, подготавливает конечный продукт.
Цепочка получается простая: Вася - ведущий программист, придумал гостевую книгу, дал задание Пете программисту и Маше дизайнеру. Пете – реализовать предоставленные алгоритмы; Маше – нарисовать интерфейс. И Маша, и Петя сдают работу Васе. Вася принял макет Маши, передал этот макет Пете. С макетом Петя получил ещё и инструкции от Васи, в которых чётко расписано, что и как надо делать с макетом. Оформление от Маши, движок от Пети, а содержимое от клиента (он же – конечный потребитель созданного блага). Вот это – полное и грамотное разделение оформления и содержания. Маше, Васе и потребителю до лампочки, что там использовал Петя: FastTemplate, Smarty, XML, HTML::Template или ещё какую технологию. Это заботы конкретно Пети. Хотя тут и забот-то нету – выбрал то, что тебе нравится, и всем предоставленным требованиям отвечает . Не могу понять, почему вы до этого так долго идёте? Судя по тому, что тут было написано, ни одного крупного коммерческого проекта никто не писал. А если и писали, то организация этого проекта оставляет желать лучшего. Попробуйте свою точку зрения, положить на масштабы того-же Microsoft'a и представить, как бы ваша логика работала в их рамках. А там надо не 10 и 20 человек организовать… Вот уж кто Вильям Гейтс, так это прирождённый IT-менеджер. А теперь в тему. Технология шаблонизции данных, нужная и полезная вещь, которая позволяет не мешать Маше и Пете выполнять свои непосредственные обязанности и помочь менеджерам отделить мух от котлет. В свою очередь, заблуждения о том, что шаблонизатор A, хуже чем B, потому что, он не умеет делать … вообще безосновательны. Каждая система пишется с учётом определённых требований и не может быть использована для любого проекта. Только поэтому выбор этих самых шаблонизаторов такой широкий, ибо не каждому подходит A, потому что он …, … и … Сегодня время Smarty и FastTemplate, завтра XML, послезавтра ещё чего-то, т.к. возможностей первых двух хватает на сегодняшний день. Мне например обе эти системы не подходят из-за их «навороченности». Никакой шаблон недолжен нести код. Мы помним, что этот самый шаблон рисовала Маша, а она ни php, ни perl даже в глаза не видела - У неё есть 8Mpx цифра, яблочный комбайн, ручки и хорошие способности к рисованию. А вот Петя, уже должен суметь без запускания пальцев в исходный макет (идеальный вариант) написать систему, которая этот конкретный макет будет использовать. Вот XSLT в полной мере позволяет решить проблему запуска ручек Петей в Машину работу, окончательно закрыв этот топик, а Smarty и FastTemplate заставляют Петю лазить по Машиной работе, вставляя туда шблонизаторскую разметку. |
Цитата:
Цитата:
Цитата:
|
RaZEr
Цитата:
Цитата:
Хочешь вырезай а хочешь оставляй, дело то твое. y13 Цитата:
А потом: Цитата:
Нет, брат y13, хреновый из тебя проектировщик и менеджер :biggrin: |
Цитата:
Очень удобно засунуть это всё с CDATA, но тогда это всё преспокойно пройдет мимо парсера, а учитывая что в хорошем движке изменяться должно почти всё, получаем результат - почти всё пройдет мимо парсера. |
RaZEr
Может ты приведешь пример? А то я что-то не могу понять что за сайты такие проблемные ты там разрабатываешь.. Пример в студию. |
Да просто всё. Есть CSM, есть визуал-редактор (window.design_mode). Последний из них имеет привычку генерировать не слишком валидный код (IE вариант), который тем не менее неплохо бы пропустить через XSLT. Хотя бы потому что простой тег <p> может быть в дизайне представлен красивым блоком с округлыми краями.
|
Цитата:
P.S. Глупый, не глупый, а деньги получает. Маша с Петей не грустят. Проекты вовремя уходят. Странно да? Надеюсь, без глупых намёков и поспешных выводов Вы сможете прожить? Иначе я тоже наделаю поспешных выводов и ретируюсь задом. Не вижу смысла спорить если у оппонента такой взгляд на мир. Ничего нового так и не узнаешь. |
y13
Свои мысли я расписал на предыдущей странице и мне нечего добавить. Ежели ты хотел лишь сказать что использовать темплейты вообще это лучше чем их не использовать, то ты открыл америку, по-моему никто иначе и не считает :cool: RaZEr На твоем бы месте, весь код от этой HTMLArea на выходе обрабатывал бы автовалидатором (автоматом закрываем все тэги). Если ты считаешь что это тупо то что поделать -- ты хочешь и на... сесть и рыбку съесть :) Я бы не стал думать об обработке пользовательского текста XSLем. Это слишком чревато, да и не нужно никому. Цитата:
y13 Цитата:
|
Цитата:
Цитата:
Вот, и RaZEr очень прав сформулировав так задачу обсуждаемую здесь: Цитата:
Цитата:
Цитата:
Цитата:
|
Hubbitus
Да, я видел что получается из HTMLArea особенно если в нее копипэйстить мсворд. Однако все проблемы не так актуальны если юзать: PHP код:
Цитата:
Цитата:
|
Цитата:
|
Hubbitus
Да, еще отвечая на все твои вопросы об экстракоде Smarty и концепции разделения, Цитата:
Нагляднее всего выгода от этого прослеживается когда меняется дизайн сайта и вместо меню скажем в одну колонку меню становится в две колонки (в первом четные, во второй нечетные), программер PHP отдыхает. Однако главное не то что он отдыхает, главное то что если на движке этого сайта работают еще два сайта (скажем клоны, расчитаны на другие ниши) то в их PHP коде ничего не поменяется, потому что так и должно быть -- офорление вторично. Следующая "версия" сайта подойдет под все эти сайты с минимумом правок PHP (или вовсе без них). RaZEr Зачем существует VbCode мне непонятно. Скорее кто-то (тоже очень мудрый) подумал что HTML разметка очень сложная -- давайте заменим ее на "попроще". На мой взгляд VbCode только усложняет жизнь, выучить пару тэгов HTML не составляет труда и полезней чем помнить VbCode. Имиджи можно закрывать автоматом, можно не закрывать, еще еще еще еще еще раз плюну в тебя функцией htmlspecialchars() которая спасет тебя от любого невалидного HTML внутри XML. Цитата:
|
Цитата:
Цитата:
Цитата:
Никто тебя не достает. Более того ты не думаешь, что это тоже напрягает ... сталкиваясь не раз с этими проблемами, слышать как это всё просто легко и в крайнем случае никому не нужно? |
RaZEr
Назначение топика насколько я понял -- рассмотреть разные системы темплейтов, сравнить их, выбрать опимальную и т.д. а ты же хочешь решить те проблемы которые ни одна из них не решает: человеческий фактор. |
Я вообще ничего не хочу решить :) Со своими подходами к этому вопросу я давно определился.
Я просто говорю тебе о том, что XML более зависим от своей "валидности" нежели какой-нибудь самопальный темплейтер "раз и готово". Вот есть например ламерский парсер заменяющий {имя_переменной} на значение. Он рулится обычными регами и в самом страшном случае просто заменит тег на пустую строку или же оставит нетронутым (если тот не попал под регу). XML же куда более капризен. Упаси меня не закрыть какой-нибудь тег или оставить невалидный символ, - сразу парсер эррор и всё сорвано. Конечно можно условиться, что администратор системы обязан вводить валидный код, но, согласись, это сложнее чем тупо заменять регами? |
RaZEr
В каком случае тебе не подойдет текст, о котором ты говоришь тут: Цитата:
|
Помнишь с чего я начал?
Цитата:
|
RaZEr
Я уж кажись привел пример. Не шибко сложный был, да :) |
Да. Только явно не в кассу. Практика показывает, что пока с внедрением XML немало проблем. Это не моё мнение, это - факт.
|
Цитата:
Цитата:
Цитата:
|
RaZEr
Пока что ни одной неразрешимой проблемы я не услышал. Это тоже факт :cool: |
Цитата:
|
RaZEr
Очень умно. Но я не вижу ни одной проблемы которая была бы столь сложной что заняла бы больше времени чем какая-нибудь рядовая задача ;) |
Цитата:
|
RaZEr
Это уже другой вопрос. Собственно это я и хотел услышать. |
Ну слава богу. Не подрались - уже хорошо ;)
А по существу. Есть идеи как грамотно превратить невалидный XML в максимально валидный? |
RaZEr
Чтоб ты не подумал ничего хорошего я имел ввиду что это соответсвует натуре человека -- чем разобраться в XML и XSL легче конечно взять готовое или написать заново то что уже давно написано ;) Максимально валидного XML не бывает (бывает валидный или нет). XML по сути не предназначен для правки человеком (хотя и не исключает этого). XML должен создавать программист (через скрипт) а не пользователь. Если прораммист граммотный то XML будет валиден всегда, даже если содержит текст пользователя. Если текст пользователя содержит HTML то его можно автоматом приводить к XHTML либо пропускать через htmlspecialchars(). Я еще не видел написанной кем-то реализации HTML->XHTML, наверное от htmlspecialchars() никто пока не страдал. |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
как это я не заметил такую интересную дискуссию?:)
про валидный xml: есть xml-схема, есть DTD, есть прочее, т.е. проблем с проверкой нету, есть проблема с составлением правил(что обрезать, а что нет). про xslt: предлагается следующее упражнение(типичная задача для вывода каталога): 1. есть некоторый xml-файл с данными(там только данные, как и предложил denver). что-то типа: <catalog> <item> <id>1</id> <title>АААААААА</title> </item> <item> <id>2</id> <title>БББББББББ</title> </item> <item> <id>3</id> <title>ВВВВВВВВв</title> </item> <item> <id>4</id> <title>ГГГГГГГ</title> </item> </catalog> .... 2. есть некоторый шаблон(xslt). 3. есть код на php, который выдает html(ну то есть типа: $xsltInstObj->out("my.xml","my.xsl");) внимание задача:): вывести все данные в n-столбцов, отсортированные свверху вниз, т.е. типа: а г ж й б д з в е и за n возьмем - 4(столбца) причем баланс столбцов должен сохраниться, т.е. все столбцы должны содержать максимально возможное равное число элементов(формулу не привожу, т.к. в ней часть решения:)). если еще усложнить задачку, то вывод должен быть таким: <table> <tr> <td> 1 элемент 1 столбца </td> <td> 1 элемент 2 столбца </td> <td> 1 элемент 3 столбца </td> <td> 1 элемент 4 столбца </td> </tr> </table> по идее в подходе Денвера, это логика вывода, которая ложится на верстальщика. Завтра все приходим на работу и даем задание верстальщикам, о результатах пишем здесь:) |
Sheryld
Ну формулой будет ceil(count($items)/$n)) тут долго думать не надо. Особенность реализации зависит от конкретного языка будь то Smarty или XSLT, скорость реализации зависит от знаний/опыта верстальщика в этом языке. Да, XSLT это в язык прораммирования (только вывода). Однако смешно смотреть на сборище снобов пэхапэшников которые так наивно уверены что верстальщик не может (не в состянии, не хватит мозгов, куда там) выучить язык программирования, что это только пэхапэшнику дано, но пэхапэшнику скучно его учить. Почему бы не рассматривать это и так: "нам нужен программер PHP(соотв. +MySQL,+Unix, etc) и программер XSLT(соотв. +HTML, +CSS etc)"? "Программер" XSLT будет ненамного дороже верстальщика HTML, однако в результате это будет настоящее отделение контента от оформления. RaZEr В спецификации PHP тоже не написано что код не предназначен для правки пользователем, тем не менее, ты обычно не советуешь заказчику менять даже константы в коде. Аналогично хочется спросить -- "максимально валидный XML" -- цитата с W3C будет? From RaZEr: Денвер! Личку - в ПС. Демогогию эту устраивай в другом месте! |
дьявол кроется в деталях.
покажи реализацию на xslt. |
Sheryld
Ну скажем вот решение для n=4: Код HTML:
<html xsl:version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> |
не знаю как вам, мне определенно понравилось.
|
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Hubbitus
PHP в качестве языка логики оформления :rolleyes: Ну это ты вернешься к тому с чего начал: <?=$color?> и т.п., тоже неплохо собственно ;) А если серьезно, то просто возникнет вопрос безопасности, PHP в этом плане шибко мощный. RaZEr Цитата:
ЗЫ. :beer: |
тут есть одно фундаментальное преймущество.
xslt реализован на множестве платформ, как следствие имеет большую популярность, документированность и т.д. я вобщем об этом писал, немного выше: Цитата:
|
Цитата:
|
я не о php в целом, а о smarty в частности.
если все делать по-человечески, то вся логика отображения и верстка перейдут из php — куда угодно, практически без правок. меняем только бизнес логику и парсер. пример: переезд сайта с php на asp.net. |
Пример плохой (не часто такие переезды происходят), но я с тобой согласен - из связки FastTemplate, Smatry, XSLT последний будет предпочтительнее.
|
Часовой пояс GMT +4, время: 19:22. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.