![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
Что по Вашему мнению должен включать в себя шаблонизатор и какие функции вообще иметь?
1) Работа с одном документе с разными шаблонами. 2) Работа с данными (Как вывод простой переменной, так и массива в шаблоне). 3) Компиляция (Если файл шаблона изменился, "компилируем" заного). Высказывайте мнения, алгоритмы, советы. Интересно всё. |
|||
|
||||
Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
Хм, ещё один немаловажный вопрос, какой делать синтаксис шаблонизатора?
можно сделать нечто вроде:
аля XML, что бы можно было прогонять через валидаторы всякие и т.д. но получается немного громоздко, кому как удобно? тоже инетересно. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Для меня шаблонизатор это только парс шаблона и создание документра. Весь программный код вне шаблона.
|
|||
|
||||
skalex |
|
|||
![]() Хороший человек ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 895 Регистрация: 2.4.2004 Репутация: 8 Всего: 23 |
Обязательно должна быть поддержка циклических и условных операций ... Очень полезная вещь - это возможность получить вывод шаблона в переменную (без вывода на экран) (аналог fetch в Smarty).
|
|||
|
||||
Master |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1530 Регистрация: 13.5.2003 Где: Mother Russia Репутация: 8 Всего: 10 |
Есть уже готовый смарти, есть xslt, есть php на крайний случай... вопрос. зачем усложнять? я раньше тоже от безделия писал собственные шаблонизаторы и Изотоп этой болезнью болеет
![]() ![]() -------------------- Вавилон, Вавилон Что ты построил, что разрушил? Вавилон, Вавилон Плавятся души дьявольским огнем. |
|||
|
||||
skalex |
|
|||
![]() Хороший человек ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 895 Регистрация: 2.4.2004 Репутация: 8 Всего: 23 |
Master, согласен с Вами!
|
|||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Шаблонизатор должен по моему мнению много чего уметь:
1. Замена подстановок. 2. Замена констант (определенные в коде текстовые блоки). 3. Работа с циклами. 3.1 Работа с функциями внутри циклов. 4. Работа с уловными блоками, в т.ч. и в циклах. 5. Возможность подключения текстовых/РНР файлов в шаблон. 6. Некие утилиты для составления select'ов и прочих мелочей используемых в формах. ОФФ: Master, гы ![]() -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
skalex |
|
|||
![]() Хороший человек ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 895 Регистрация: 2.4.2004 Репутация: 8 Всего: 23 |
На написание такой вещи как шаблонизатор может уйти уйма времени ... Все же мне было бы жалко его терять! Тем более что есть масса готовых решений.
IZ@TOP, все, что Вы написали есть в том же Smarty + можно расширять до бесконечности. Другое дело - если появляется совершенно новая концепция или еще что-нибудь в этом духе ... Но вроде с шаблонизаторами уже все ясно и прозрачно ... |
|||
|
||||
Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
Mace
посмотри Smarty получше, посмотри СКОЛЬКО оно весит. Посмотри ВО ЧТО оно компилирует простенький пример. Да, Смарти это сила, но для больших проектов это лишний тормоз, ИМХО.
Есть масса всех примеров, зачем вообще писать что то своё? Однако всё же пишут и создают. Вот в Смарти есь кеширование, хоть какое то, где оно ещё есть? (в более менее нормальном виде). Ты думал как такое сделать самому? А если попробовать? Имхо процесс написания своего велосипеда повышает профессиональный уровень программиста. Ведь если на то пошло, 3/4 сайтов можно написать только на PEAR. Добавлено @ 14:58 Mal Hack Это я привел пример. Синтаксиса, аля XML, в этом была суть примера. |
|||
|
||||
skalex |
|
|||
![]() Хороший человек ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 895 Регистрация: 2.4.2004 Репутация: 8 Всего: 23 |
Ну я ужал движок Smarty до 170 Kb. Не такой уж и большой размер. Opr, ты же одно время пропагандировал Smarty. Что заставляет отказываться от него ? Просто я знаком со Smarty чуть более недели ... На первый взгяд мне очень понравилось, хотя некоторая тормознутость имеет место. Может и не стоит начинать пользоваться ? |
|||
|
||||
Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
Mace
Я не заставляю от него отказываться. Движок хороший, мощный, но для некоторых задач ОЧЕНЬ тяжелый. Имхо выбор шаблнонизатора это что-то из ряда религиозных войн. Можешь специально создать тему, где обсуждать, в этой теме же обсуждается функционал удобного(!) шаблонизатора. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
ИМХО, шаблонизатор - по сути основная нагрузка на скрипт, следовательно он должен наиболее оптимально к эт ом скрипту быть адаптирован.
Зачем? Зачем тратить машинное время на парс этих циклов. Не проще ли их выполнять на программном уровне сразу? Просто хочется понять. |
|||
|
||||
Opik |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
Mal Hack
для этого и служит
|
||||
|
|||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Opr но ведь в нем все равно будет оставаться то, что нам (для конкретной задачи) не нужно. Или я чего-то не понимаю...
|
|||
|
||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
Для меня в шаблонизаторе главное (кроме, естественно, быстродействия, отсутствия багов и прочего) это - простота!
|
|||
|
||||
Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
Mal Hack
например!? т.е в идеале подключается откомлиленный файл. Где нету ничего лишнего, по сути. |
|||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Вообще я если честно долго думал, делать условные блоки или не делать в циклах шаблона, так пока и не сделал. Мне тоже кажется что это будет уже перебор. Хотя как то реализовать некоторые вещи хочется. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
Opik |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
сами подумайте что будет выполнятся быстрее? (цикл)
1) аля IPB
или
|
||||
|
|||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Opik, и что же бдет работать быстрее?
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
IZ@TOP
по моему всё таки второе, потому что не вызывается каждый раз функция, что всё таки тоже требует времени. |
|||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Opik, ага, мне тоже так кажется. Но тогда если мы так дорожим производительностью, давайте кодить как наши прадеды!?
![]() -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 24 Всего: 55 |
IZ@TOP
т.е? да и зачем в крайности. |
|||
|
||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
замена наборов символов в тексте на другой
у меня есть файл cont.txt я его читаю $f = fopen("sh.txt","r"); fclose($f); он выступает в роли шаблона для страницы, как можно заменить в нем TITLE на $title CONTENT на вызов функции и т д -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
Mystery_of_being |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 7.11.2006 Репутация: нет Всего: нет |
Не легче в шаблоне вызывать код?
Но я вот не совсем понял задачу.. у тебя в sh.txt есть title и ты хочешь его на $title ? str_replace ( 1, 2, 3) Ищем (1), затем то что нашли меняем на (2) , где ищем (3) |
|||
|
||||
Vaulter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: 6 Всего: 22 |
americanets, есть такое понятие... шаблонизатор
..... он все это делает, preg_matchи и т.д. |
|||
|
||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
понятно , буду искать и пробовать
-------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
SamDark |
|
||||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
americanets,
Vaulter, Нафига вам шаблонизатор?! PHP и так самый замечательный шаблонизатор сам по себе.
Шаблон:
-------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
||||
|
|||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
ясно, а цыклы типа while можно как нибудь вывести подобным образом?
-------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
nickon |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 4.7.2006 Репутация: нет Всего: нет |
Лично я считаю, что в самом шаблоне ничего не должно быть лишнего... только заданный набор тегов... всё остальное делается на уровне кода... Функций шаблонизатору нужно совсем немного .... замена одичных и блочных переменных... + грамотное кеширование... как дополнение (опционально) можно сделать поддержку php кода в шаблонах ... Воопще хотелось бы ещё обсудить принципы построения кеша для динамических шаблонов... |
|||
|
||||
Vaulter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: 6 Всего: 22 |
вот какие мысли по поводу построения кэша.
допустим что на странице учавствуют постоянные тэги (неизменяющиеся в пределах одного сайта) и блоки вывода каких либо модулей (например последние новости, меню пользователя и т.д.) так вот. для каждой функции вывода блока должна быть маленькая функция возвращающая время последнего изменения блока (для новостей, дата последней новости, для пользователя например дата последнего привата или даже 0 для стат. блоков!) ну и соотв. проверяется если дата создания кэша больше всех времен, он валидный. иначе генерируем (с вызовом всех блоков) новый кэш. вот такой... пока TODO |
|||
|
||||
SamDark |
|
||||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
Нафига вам шаблонизатор?! PHP и так самый замечательный шаблонизатор сам по себе.
Шаблон:
-------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
||||
|
|||||
AntonioBanderaz |
|
|||
![]() Velichko Anton ![]() ![]() Профиль Группа: Участник Сообщений: 851 Регистрация: 28.4.2005 Где: Санкт-Петербург Репутация: 2 Всего: 18 |
Потому что люди могут и не знать php, дизайнеры например, как у нас в конторе... дизайнер верстает... но php не знает... и шаблоны делать умеет... для нашего движка -------------------- ГЫ... |
|||
|
||||
Vaulter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: 6 Всего: 22 |
SamDark, Хех... вот тебе пример банального шаблона, который ну очень сложно делать каждый раз ручками по твоей схеме:
|
|||
|
||||
SamDark |
|
||||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
Vaulter,
Ничем не хуже...
Ваших шаблонов я не понял в полной мере. Получается верстальщику надо будет изучить штук десять самых популярных шаблонных систем... не проще ли изучить 10 конструкций PHP? Если объясните, что значит
может напишу полный эквивалент. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
||||
|
|||||
americanets |
|
||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
нашел статейку
) file2compile.tpl – файл который мы будем парсить 2) template.php – главный файл содержащий класс шаблонов Листинг файла file2compile.tpl:
Листинг файла template.php:
Для вывода на экран используйте следующие команды:
тут понятно вместо Супер сайт и прочего вставлю $title и прочую инфу а если у меня цыкл например вывод фот в виде html таблицы, как с ним быть ? -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
||||||
|
|||||||
SamDark |
|
|||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
Нечего морочаться с шаблонами. PHP - сам по себе шаблонизатор и в использовании пары циклов ничего плохого нет:
-------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
ну это понятно, просто удобнее 1 раз написать а потом пользовать, вставляя в шаблон только определенный код указатель,
Добавлено @ 15:59 и не совсем удобно когда для разный страниц свой дизайн конечно есть вариант с footer и heаder но тоже не совсем удобно -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
Alex13 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 30.12.2005 Где: Новосибирск Репутация: нет Всего: 1 |
SamDark, позволь не согласиться. Такой подход становится неудобным при редактировании шаблонов, при корявой реализации может вылиться в php-including и при изменении структура переменных придется менять все шаблоны.
-------------------- Самая страшная ошибка - это ошибка, не имеющая явных причин и конкретных последствий. Антисоциальный блог. |
|||
|
||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
Alex13, вот вот, а как сделать чтоб все нормально было?
-------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
SamDark |
|
||||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
Согласен полностью, но
неудобен абсолютно любой подход. Добавлено @ 09:54 americanets, Проблема с footer-header решается очень просто: делаем шаблон и в месте, где нужен динамический контент вставляем:
Перед запуском шаблона просто определяем $content, который указывает на вложенный шаблон. p.s. что такое шаблоны я знаю - трёхлетнее общение с Smarty. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
||||
|
|||||
kaa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 817 Регистрация: 5.11.2005 Репутация: -1 Всего: 2 |
Отдельный шаблонизатор - это для бооольших проектов, типа форумов или CMS, движух там разных, а для небольшого сайта пойдет и стандартная замена в цикле.
Может я в чем не прав но пользую всегда str_replace... |
|||
|
||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
ага вопрос в том как в контент оторый будет в тексте выглядеть {content} впишнуть цикл или еще что то что тоже будет базироваться на собственном шаблоне, например html таблица
-------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
SamDark |
|
|||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
americanets,
-------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
а как мне сделать для него шаблон например
выложить его как art.tmp потом подгрузить обработать и чтоб он сам не прописывался в шаблоне а вставлялся в {content} отделить дизайн шаблона от кода нужно чтоб оснавной шаблон был просто что то вроде этого ____________________________________________ | | {title} |___________________________________________ | {content} |{news} | | | | | | | | | | ------------------------------------------------------------------------ для таблицы тоже шаблон но без кода код только в php файлах обрабатывающих шаблон и на основе него отдающий в основной инфу -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
SamDark |
|
||||||||||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
americanets,
Нет смысла, но если уж очень хочется - Smarty. То же на PHP: Главный шаблон main.tpl:
Новости news.tpl:
Статья art.tpl:
Скрипт index.php:
-------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
||||||||||
|
|||||||||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
ясно буду разбираться, может что выйдет
-------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
Rock |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 264 Регистрация: 13.1.2005 Где: Краснодар Репутация: 0 Всего: 1 |
по моему лучше xslt нет ничего, но это имхо.
|
|||
|
||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
Вот, налабал начало шаблонизатора, естественно единичные данные выводит, также естественно динамичные данные мне нужно будет впихнуть в CONTENT, вопрос как это можно сделать?
-------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
americanets |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
например при выдаче результатов поиска примерно такая конструкция
Добавлено @ 09:29 как их обработать и всключить в цикл вобщем размножить, делить на страницы и т д -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
||||
|
|||||
SamDark |
|
|||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
americanets,
Так чем не устраивают приведённые мной выше примеры? -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
americanets |
|
||||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
по моему не полностью разделяют код от дизайна , а нужно допустим чтоб шаблон был
а на выходе после цикла в страницу инклюдилось
с таблицами тоже самое или в шаблоне
а на выходе
-------------------- Пусть популярную музыку слушают те, среди кого она популярна |
||||||||
|
|||||||||
Eugene_Bond |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 3.9.2006 Репутация: 1 Всего: 4 |
Вариант простого, но хорошего шаблонизатора с ведомым контроллером: XTemplate
Поддерживает инклюды, блоки и переменные. Большего от шаблонизатора с ведомым контроллером и не требуется. Проект практически не обновляется, потому что практически все, что нужно в нем уже есть. Последнее обновление было в 2005 году. Если не ошибаюсь добавили нативное кеширование средствами шаблонизатора. До этого он не обновлялся с 2003 -- кеширование дописывалось ручками. Полностью отделяет логику от дизайна. Сам долго пользовался именно этим шаблонизатором. Понятен для дизайнеров. Пример шаблона (для описанной выше задачи):
Пример выводящего кода:
Код писал по-памяти. Мог где-то немного с методами напутать, но идея именно такая. |
||||
|
|||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
ясно, все же хочется свое , чтоб все понятно было, а то не могу со сторонними шаблонизаторами работать
![]() Добавлено @ 12:23 вобщем как придумаю выложу, может кто раньше подскажет -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
SamDark |
|
||||||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
americanets,
А шаблонизатор полностью? Ничуть! Eugene_Bond, Дизайнеру (точнее верстальщику) понятно то, к чему он привык. Нет никакой разницы, шаблонные ли это тэги или же пара конструкций PHP. p.s. извиняюсь, но не сдержался:
![]() -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
||||||
|
|||||||
Eugene_Bond |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 3.9.2006 Репутация: 1 Всего: 4 |
Они, к сожалению, разные бывают. Для некоторых и такое сложно.. А для некоторых не важно смарти это или XSLT -- работают со всем. Но конструкции PHP ИМХО не кошерно использовать извиняюсь, но не понял прикола |
|||
|
||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
и все же есть ряд систем использующих свою систему шаблонов и позволяющих полностью избежать кода в дизайне например кмс мастер
-------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
сдклал так, но неработает
-------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
americanets |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
еще попробвал
но выводит только первое , зато там где надо, как сделать чтоб все выводилось? -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
||||
|
|||||
SamDark |
|
||||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
Eugene_Bond,
То же можно сказать и про шаблоны. Всё это - дело вкуса с тем лишь отличием, что шаблонизатор надо ещё написать, придумать свою разметку, обучить верстальшика. Да и нагрузка на сервер дополнительная при парсинге шаблона... americanets,
-------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
||||
|
|||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
Спасибо, а нагрузка при таком решении сильно увеличивается ?
-------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
SamDark |
|
|||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
americanets,
Не очень, но всё зависит от количества данных. p.s. см. ob_start() и остальные ob_*(). p.p.s. не лучше ли всё-таки разделить получение и отображение данных как несколькими постами ранее? -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
лучше, но иногда требуется полное отделение дизайна от кода, можно пользовать и то и то в зависимости от ситуации -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
Eugene_Bond |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 3.9.2006 Репутация: 1 Всего: 4 |
||||
|
||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
да, шаблоны нужная штука : )
-------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
SamDark |
|
|||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
-------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
Eugene_Bond |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 3.9.2006 Репутация: 1 Всего: 4 |
SamDark,
опять таки, применимо только для движков с линейными контроллерами хотя, на вкус и цвет.. |
|||
|
||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
вобщем пользовать можно все, кому что нравится, главное чтоб было тому кто делает, кто управляет вобщем всем
![]() Каждому по потребностям и по возможностям -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
SamDark |
|
|||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
Eugene_Bond,
Что подразумевается под линейными контроллерами? americanets, Тут ты прав. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
Eugene_Bond |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 3.9.2006 Репутация: 1 Всего: 4 |
SamDark,
подразумевается, что код сайта выглядит примерно следующим образом: article.php
news.php
something.php
то есть мы имеем клонированные файлы контроллеров конкретных разделов сайта, которые выполняются линейно. это сродни "функциональному программированию". В любом случае переводить тему в холи варс смысла не вижу. Задачи бывают разные. Видимо есть и такие, которые можно решить и инклюдами. |
||||||
|
|||||||
SamDark |
|
|||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
Eugene_Bond,
Ну, какой-то у вас совсем пример тривиальный (как в принципе и у меня). А вообще любой шаблонизатор работает точно по такому принципу: 1. Получение данных, передача их шаблонизатору. 2. Отображение. И чем замена некоторого текста на что-то ещё лучше include() не понимаю. Конечно под include() стоит понимать переписанную функцию, возможно принимающую некоторые параметры, проверяющую авторизацию и т.д. p.s. холи варс начинать даже не думал. Сам крепко подсел на Smarty из за удобства... -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
BuShaRt |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
SamDark,
То ты против шаблонизаторов, то за.. )) Всем Юзайте смарти и хватит уже задумываться о роизодительности и остальном, мы не в каменном веше живем... В крайнем случае оптемезировать вручную смарти можно, выкинув не нужное.... |
|||
|
||||
awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
Думаю работа шаблона должна заключаться не более чем в этом:
Используя тот же "смарти" я понял что уж лучше деревянно чем монстерски огромно. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
||||
|
||||
Gold Dragon |
|
||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
я ползуюсь следующем (упростил для восприятия
![]() есть файл шаблонов
а тут всё это формируется и выводится
это моё мнение, но куда проще и понятнее ![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||
|
|||||
SamDark |
|
|||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
В общем, какие использовать шаблоны - не важно. Главное, чтобы разработчику было комфортно, но использовать их настоятельно рекомендую, иначе о повторном использовании кода не может идти речи.
Для себя сделал вывод, что одному вполне можно писать Native-шаблоны (те, что встроены в PHP), а вот в команде уже проще пользоваться Smarty или другой системой. Для менее опытных программистов (или что ещё критичнее верстальщиков) шаблоны PHP могут оказаться слишком мощными, из за чего возможно появление ошибок и нарушение концепции MVC. Огромный полюс Smarty перед остальными - генерация тех же Native-шаблонов и использование уже их, так что скорость не теряется. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
что-то настолько привык уже писать шаблоны, что даже для сайтиков из 5-6 страничек это по привычке делаю..
А вообще, по моему, самое главное это разделять PHP и HTML ^) -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
Powerhead |
|
||||||||||||||||||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 7.11.2006 Репутация: 1 Всего: 2 |
Хочу спросить, почему же всё-таки целесообразно использовать шаблонные движки, если можно обойтись php.
Для чего создавать тысячи новых синтаксисов Вот требования к парсеру шаблонов, озвученные в этом топике:
Во-вторых, изучить несколько функций foreach(), if(), print() проще и целесообразней, чем забивать себе голову синтаксисом, который через 5 лет никому нужен не будет. Я вижу отличие шаблонных движков от php в одном - в возможности кеширования страниц. Но, при современных мощностях, я уверен, просто бессмысленно жертвовать удобством разработки и плодить множество подъязыков ради сомнительного прироста в производительности вебсайта.
Пока я не вижу ни одной причины, по которой было бы целесообразно усложнять средства разработки. |
||||||||||||||||||
|
|||||||||||||||||||
SamDark |
|
||||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
Powerhead,
Как уже говорилось:
Когда пишешь в одиночку - всё отлично. Никакие шаблоны не нужны. Если пишет команда, как правило, есть пара опытных программистов и остальные - менее опытные. Более опытные занимаются обычно разработкой архитектуры, интерфейсов и т.д. Менее опытные часто занимаются частью, отвечающей за представление. Иногда им чего-то нехватает и они начинают писать код, который модифицирует данные модели (не форматирует, а именно модифицирует). Шаблоны же не позволяют таких вольностей. Да, Smarty - уже не совсем шаблонная система, в синтаксисе шаблонов которой тоже можно понаделать ошибок, но она как раз не допустит разрушение концепции MVC, что важно.
Согласен. Поэтому надо ставить другую задачу: "Разделить модель от её представления максимально удобным и безопасным способом". P.s. кэширование организовать на чистом php не так уж сложно с помощью упомянутых вами ob_*() -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
||||
|
|||||
Gold Dragon |
|
||||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
Вот я вывожу типа новостной ленты. Т.е. Есть функция которая где-то по каким-то запроса достаёт данные. Страница состоит из нескольких одинаковых блоков. Вот пример
А теперь если мне надоела форма вывода, то я просто меняю шаблон и не задумываюсь над тем как работает сам скрипт. И второе, есть люди, которые нефига не понимают в PHP (да им это и не нужно), но которые отвечают за сам дизайн сайта. Вот и получается, что один специалист в PHP, другой HTML+CSS. PHP тут только сама функция, всё остальное чистый HTML это полная ерунда! Что значит изучить несколько функций? А остальное? Вот если я из английского знаю только "Май нэйм из Ваня", то я не думаю что способен разговаривать с англичанами!
а такой встречный вопрос... ты возвращался к своим старым проектам? Даже если всё комментировать намного сложнее менять дизайн если он не отделён от кода. -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||||
|
|||||||
SamDark |
|
|||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
Gold Dragon,
В твоём подходе есть минус - верстальщику не видно кода всей страницы. Да, для программиста так удобней. Но вот открывать кучу тэгов в function head() и закрывать в function foot() не очень удобно... -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
Согласен, только это просто шаблон повторяющейся части, а целая страница есть конечно
![]() И в любом случае лучше так, чем мешать с PHP -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
SamDark |
|
|||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
Gold Dragon,
Вылитый синтаксис Smarty ;) -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
SamDark, ну может и так
![]() по моему и IPB так написан... -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
SamDark |
|
|||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
Gold Dragon,
Да, IPB написан именно так. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
Проблемка с динамичным созданием шаблона выводит ерунду, то что нужно + код шаблона влезает
-------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
SamDark |
|
|||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
americanets,
Это как раз не шаблон, а антишаблон. Весь смысл шаблона - не мешать его с кодом. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
americanets |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
ну вот как раз в шаблоне у меня написано
NEWS <br> KRATKO должно туда все вставиться , а на выходе получается смешение информации в шаблоне и нужной информации Добавлено @ 14:10 а вот как сделать чтоб выводилось нормально ума не приложу хотя если делаю в коде
то все пучком а разелить пока не получается -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: 44 Всего: 73 |
Может кто-то и высказывался за PHP Plain, но я еще раз скажу: нафиг смарти когда он в точности повторяет PHP код? Неужели проще написать {{$var}} вместо <?=$var?>, {{if $var == 1}}...{{/if}} вместо <?if($var == 1)?>...<?}?>?
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
Gold Dragon |
|
||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
может и не проще, но истетичнее
![]() на мой взгляд, например, это
хуже читается чем это
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||
|
|||||
SamDark |
|
|||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
Gold Dragon,
Можно немного покороче:
-------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
ну это упрощено конечно
![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
-=Ustas=- |
|
||||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 32 Всего: 69 |
Что то я не вижу тут у вас шаблонизатора?! Где он?
Здесь у вас часть логики в шаблоне, что само собой противоречит шаблонам (если это не активные шаблоны в компонентном подходе). А шаблон должен выглядеть как
-------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
||||
|
|||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
-=Ustas=-, так я про это и сказал
![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
SamDark |
|
|||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
-=Ustas=-,
Gold Dragon, Я всё-таки считаю, что конструкциям перебора вроде foreach самое место в шаблонах. Не даром они есть в XSLT. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
-=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 32 Всего: 69 |
Я не против активных шаблонов с обходом циклов, но в таком случае нужно реализовывать псевдо-код, чтобы PHP-шными конструкциями не пугать дизайнеров-верстальщиков. -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
Sardar |
|
||||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 4 Всего: 317 |
Шаблонизатор должен просто размечать места в шаблоне и уметь собирать части шаблона в блоки. Всё остальное должно реализовываться view обьектом (контроль маркеров).
Может показатся громоздко, но это удобно. Отказался от подхода Pear:Flexy парсить HTML в DOM и трансформировать его, т.к. шаблонизатор проще для понимания, эффективней и удобно для генерации .rtf документов (любого текста). XSLT трансформации в таких простых случаях кк вывод из базы тоже лишний. Шаблонизатор выше тут. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
||||
|
|||||
SamDark |
|
|||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
Sardar,
Если {%block-start: "news row"%} просто заменить на {foreach news as entry} получится практически то же самое. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
BobiKK |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 655 Регистрация: 1.12.2005 Где: Essen, Deutschlan d Репутация: 4 Всего: 16 |
PHP - сам шаблонный движок. И этим надо пользоваться, а не изобретать ещё велосипеды. http://framework.zend.com/manual/en/zend.view.html - вряд ли ребятки из зенда не смогли написать свою версию smarty. Просто это мало кому нужно. А дизайнером по-прежнему не надо знать, что такое php |
|||
|
||||
SamDark |
|
|||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
BobiKK,
Всё правильно, см. начало темы. Ребята из Zend не стали писать свой Smarty т.к. он уже прекрсано интегрируется с Zend Framework. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
artfabrique |
|
|||
![]() Доктор Дизайн ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 5.2.2006 Где: СПб Репутация: нет Всего: 2 |
что такое шблонизатор - это что-то что собирает из кусков результат и возвращает его, прально?
соответственно, на чем нужно думать при написании: 1)Где и как хранить шаблоны 2)Кокого типа могут быть шаблоны (XML, HTML) 3)Как будут выглядеть управляющие ключевые слова в шаблонах (например "blablablabla{[module:news]}blablablabla") их синтаксис итд. чтоб он самому тупому был понятен (интуитивно) 4)какого типа могут быть эти "заменяемые места" в шаблонах (например: "модуль","другой шаблон" итд. 5)как оптимальней при хранении в БД часто используемой инфы её от-туда доставать Тоесть нужно кеширование провека обновлений итд. 6)Как сделать универсальную таблицу - дерево в БД чтобы в ней хранились все деревья шаблонов тут кстати очень удобно пользоваться встроенными процедурами (к сожалению в Мускуле они пока не особо) 7)Какие основные методы должен поддерживать шаблонизатор, и,не маловажно, как их назвать чтобы сразу было понятно что он выполняет без документации =))))) и это реально (я в это верю) 8)Какие данные, пардон какой сегмент и тип данных хранить в БД а какой в XML (похоже на первый пункт но не совсем) 9)Обязательно должна быть возможность переключения режимов производительности, например, если сервер перегружен то следующим 10 запросам отдаем только кэшь не старше токого -то времени. пока больше НЕДЕТАЛЬНЫХ вещей в голову не лезет =) --------------------
Я спасу мир! © ЙУХ 0000г. |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 4 Всего: 317 |
Нет, шаблонизатор не знает что такое news, для него не существует понятия переменная, коллекция и т.д. Шаблонизатор просто генерит события для контроллера шаблона, отлавливая весь вывод. Это более гибко. artfabrique, большинство, что ты перечислил в обязанности шаблонизатора ни каким боком не входит. Шаблонизатор это один из инструментов, с помощью которых view объекты собирают страницу. Главная задача шаблона держать весь текст, возможный на странице, так что бы в програмном коде строковых констант никогда бы не было. Это позволит без проблем сделать многоязычный/локализованный сайт. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
Platon |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: нет Всего: 40 |
Здравствуйте, уважаемые.
Долго тормозил меня этот смарти, очень неудобная вещь. Искал выход и пришел к тому с чего начал, т.е. к тому, чем пользовался до использования смарти. Вот пример, очень схожий с подходом Gold Dragon: main_frame2.tpl
Вот уже канва есть.
Выводится базовая страничка. Редактировать уже существующие разделы можно так:
вот и все, теперь выводятся базовые навигационные панели, панель пользователя или логина и список тем. вот такой вот пирожок ![]() 1. Не надо никаких шаблонизаторов (двойного парсинга PHP, шаблонизатор), а только 1 парс PHP 2. Лишних телодвижений нет, от переприсваиваний можно избавиться. 3. Самое главное! Код отделен от дизайна 4. Собирается как конструктор. 5. Не хранит в памяти уже скомпилированные куски дизайна (часто бывало когда надо делать $smarty->fetch()), весь дизайн сразу улетает адресату. Минусы конечно тоже есть: 1. Дизайнеру очень трудно смириться с тем что ему придется учить 3-4 конструкции языка. 2. Безусловно приятней писать {$info}, чем <?= $info ?>, тем более <?= $info->display() ?>, не говоря уже о <?= $this->info->display() ?> 3. (Лично мне) работаю в Дримвейвере 8, при работе с смарти в окне дизайнера удобно было видеть <td>{$info}</td><td>{$comment}</td> как "{$info} {$comment}" с PHP <td><?= $info ?></td><td><?= $comment ?></td> выводится в квадратиках два значка "php php" оцените подход, дайте варанты решения минусовой стороны подхода. |
||||||||
|
|||||||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
Обычно в качестве шаблоизатора использую PHP. Если надо будет сделать что-то сложное, то тогда уж XSLT.
|
|||
|
||||
flashaa |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Совершенно согласен. Добавлено @ 23:35 По моему мнению шаблоны это не только <html>{text}</html> Шаблоны имхо это и ЛОГИКА и ТЕКСТ связанный с отображением страницы. Управляющему скрипту совершенно наплевать, какие данные нужны шаблону - в строке или в массиве, если этой информации ДОСТАТОЧНО для построения страницы, она должна быть передана в шаблон, вся дальнейшая работа - в шаблоне. Думаем дальше: если шаблон связан с логикой и обработкой, то почему бы не оставить логику и возможности PHP для обработки шаблонов. Максимум возможностей. Что есть смарти? Надстройка над PHP, выполняющая то же самое что и сам PHP. Что есть XSLT? Язык для трансформации XML. Для начала нам придется сформировать XML. А оно нам надо? К тому же XSLT сильно ограничен. Это сообщение отредактировал(а) flashaa - 5.11.2007, 23:43 |
||||||
|
|||||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
Дизайнеру/верстальщику этот максимум не нужен. Им нужен удобный, просто и быстрый способ извлечения данных. При этом с защитой от дурака, чтобы ничего не сломать в логике случайно. Собственно для того шаблонизаторы и есть. |
|||
|
||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Не согласен. Шаблоны не обязательно нужно верстальщику. Шаблоны нужны просто для грамотного вывода. Разделить вывод страницы на отдельные этапы - это кстати для аякса очень важно, т.к. там происходит обновление фрагментов страницы. В сложных проектах очень сложная логика и я считаю, что эта логика должна быть максимально очищена от задач не связанных с ней - например шаблонизацией. Отсюда можно сделать вывод, что задача вывода должна быть вынесена в другой слой. Я выношу её в шаблонный слой, т.к. часто сталкиваюсь со сложной шаблонизацией. Если стоит проблема неграмотного дизайнера, то тут имхо можно создать промежуточный слой между данными скрипта и шаблонизацией. Этот слой как раз и будет заниматься приготовлением. |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
так и не понятно почему.
ну не знаю как где, а у нас именно ему и нужны. поскольку его работа - интеграция его верстки в систему с помощью шаблонизатора, который мы(программисты) ему предоставляем. а это вообще из другой темы. и шаблоны тут не причем. |
|||
|
||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
||||
|
||||
webaliser |
|
||||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 15.12.2007 Репутация: нет Всего: нет |
Шаблонизаторы... PHP, как супер-шаблонизатор(по мнению SamDark )
А приврати ка, SamDark, древовидное редактируемое 3х уровневое меню Шаблон:
Вот во что-то типа такого:
.....................Тут мы код обрежем.............. Результат в полном виде можно увидеть сдесь Бесшаблонизатрный подход важен там, по моему мнению, где нужна сверх скорость и ничего в алгоритме вывода и шаблоне вывода не будет менятся. Так как вывести шаблонизатором 10000-20000 записей из базы и построить их - это большая нагрузка... Шаблонизатор и его отсутствие - это как MS Office 2007(Win) и vi(Linux). Чем проще механизм, тем быстрее и бесглючней он отпашет p.s. Памятник погибшим товарищам, просмотревшим мой код до конца ![]() |
||||
|
|||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
Для сверхскорости можно во первых не использовать php, а если всё-таки зацепило за него намертво, то можно ускориться кешированием и прочими ухищрениями. Но экономить на удобстве не нужно. |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Интересный топик.
webaliser, а кто говорит о бесшаблонном подходе? При чем здесь вывод 10000 записей? Даже 1000 выводить нет смысла. Задавать вопросы "а вот построй-ка на {имя шаблонизатора}" не имеет смысла. Все шаблонизаторы имеют примерно одинаковый функционал. За исключением применяемого тобой блочного, когда для изменения вывода надо лезть глубоко в код. |
|||
|
||||
webaliser |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 15.12.2007 Репутация: нет Всего: нет |
Daevaorn, Я бы с удовольствием сэкономил бы... если бы знал где?! PHP4+MySQL - это все что мона юзать
![]() |
|||
|
||||
Feldmarschall |
|
||||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
webaliser, ты просто не понимаешь, что PHP - это не "басшаблонный подход", а просто еще один из шаблонизаторов.
В обсуждении такой сложной темы, как шаблоны, важно, на мой взгляд, соблюдать два очень выжных правила. 1. Не путать понятия. Очень многие люди называют шаблоном только свой движок, а остальное- "лапшой". Очень многие заблуждаются в том, что в шаблоне нет логики. Оень многие думают неправильно, что задача шаблонизатора - это разделить "код" и "PHP" и что верстальщик - единственный, для кого делается шаблон. 2. Не искать единственный идеальный вариант на все случаи жизни. Это вообще ко всем спорам относится. У твоего - блочного - шаблона есть плюсы и есть минусы. Он - да, самый простой для понимания. Но и самый сложный для изменения. Поскольку для смены логики шаблона придется лезть в код. Я не говорю, что это ужасно. Это просто факт. Ещё один факт состоит в том, что нельзя разделить работу верстальщика и программиста. В шаблонах с логикой единственным посредником между верстальщиком и программистом является набор данных. А в твоем шаблоне это ещё и логика их вывода. Если на пхп написано
А в твоем случае
непонятно, что означает этот curpage - условный переход? цикл? рекурсию? Я не говорю, что это плохо. Это факт. У блочных шаблонизхаторов есть зато большой плюс - можно красиво организовать рекурсию. С логическими это pain in the ass. В общем, у всякого свои недостатки, как говорил один киногерой. |
||||
|
|||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Feldmarschall,
PHP, пожалуй, лучший шаблонизатор, он обладает большими возможностями и свободами. В этом как ни странно, и его минусы. Для составления шаблонов на php надо иметь четкую организацию и представление как будут выглядеть блоки, а так же следить, чтобы объявлялись необходимые для работы переменные. Что-то из этого не уследил - гора нотисов, и неправильно отображенная страница. Здесь вижу плюс XSLT и smarty, места, где они связаны со скриптом четко видны (через сбор XML и методы, соответственно). Так что они мусора просто не нагребут. Думаю за это их предпочитают. Т.к. не надо думать, просто возьми и делай шаблоны, за тебя уже подумали.. Правда благодаря этому не ты управляешь скриптом а шаблонизатор, следовательно, все это не совсем оптимально и не оптимизируется больше определенного уровня. Это сообщение отредактировал(а) flashaa - 17.12.2007, 00:28 |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Неправильно отображённая страница - из-за нотисов? Так мы вывод ошибок в аутпут отрубим нафиг, и все.
Я, бы, скорее, в минусы записал потенциальную опасность шаблона для приложения. Со Смарти и ХСЛТ не всё так просто. К сожалению, слишком часто в этом мире вещь выбирается не из-за реальных потребительских качеств, а из-за неверных представлений о ней. Смарти часто выбирают в совершенно искреннем стремлении отделить "PHP от HTML", избавиться от "ужасной лапши". Учитывая возможности смарти по части логики.... не удивляешься вопросам, как из неё работать с БД! Вообще, я для себя решил, что работать на какого-то "дизайнера" - самая дурацкая причина делать шаблон. Куда важнее, с точки зрения программиста, уметь - вывести сообщение об ошибке вместо контента, сохранив дизайн сайта. - иметь возможность выводить несколько вариантов отображения, просто меняя шаблоны. - иметь возможность обновлять движок, стоящий на разных сайтах (это вообще высший пилотаж, и попытка сделать такое быстро выкидывает из головы все глупые фантазии о шаблонах и оставляет только действительно дельное). |
|||
|
||||
SamDark |
|
|||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
webaliser,
Кто ж так меню делает? Списками его надо... тогда проблемы не будет. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
CyClon |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
Шаблонизаторы с встроенным компилятором шаблонов и кэшированием показывать очень неплохие результаты. Компиляция производиться только один раз - после изменения шаблона (компиляция - перевод шаблона в PHP-код, то бишь строка "<title>{TITLE}</title>" будет переведена в "<title><?php echo $tpl->getVar('TITLE'); ?></title>"). Кэширование так же дает огромный прирост в производительности. Я просто в восторге, когда вижу красивый код. Соотвественно я за шаблонизаторы. Я все еще живу идеей написать свою идеальную CMS/CMF. Когда я начал ее осуществлять, первым делом написал простейший шаблонизатор, который удовлетворяет 80% моих потребностей, правда еще далек от идеала и не имеет реализации компилятора/кэша. Сам шаблон выглядит максимально понятным для верстальщика.
Сам шаблонизатор:
Использование:
|
||||||||
|
|||||||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
CyClon, ваш шаблонизатор мне здорово напоминает CodeCharge Studio
|
|||
|
||||
CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
Первый раз о таком слышу
![]() Добавлено через 1 минуту и 44 секунды Да и шаблонизатор мой - только каркас, написанный за 30 минут ![]() ![]() |
|||
|
||||
GeneralElectric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 13 Всего: 16 |
sTa1kEr, насколько я понимаю, все "блочные" шаблонизаторы похожи один на другой. На php_templates, XTemplate и множество других. Недавно на этом форуме пробегал точно такой же. Идея-то очевидная. Так что искать отдельные совпадения не имеет смысла, имхо =)
CyClon, "без компиляции нерационально" - это заблуждение. Миллионы РНР скриптов рабтают без компиляции и кеширования. И прекрасно работают. Как я уже не раз говорил, работа с шаблоном - далеко не "бутылочное горлышко" веб-приложения. Конечно, самопальные шаблонизаторы на регулярках отстают по скорости от модулей на С и шаблонов на РНР, но не настолько, чтобы в первую голову заботиться об их производительности. Так что, вполне можно пользоваться и этим "каркасом" =) |
|||
|
||||
CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
Нерациональность в данном случае - это то, что шаблонизатор будет пожирать больше всех ресурсов, чем остальные модули сайта. Там используются регурарыные выражения, которые сами по себе прожорливы, к тому же их много. Особенно в сложных шаблонах. Да и тот же кэш или компилятор написать труда не составит ![]() ![]() |
|||
|
||||
GeneralElectric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 13 Всего: 16 |
ну-ну. в шаблоне у нас уже откуда-то взялись регулярные выражения. и он пожрал все ресурсы.
просто фильм ужасов. интересно, что среди всех любителей порассуждать о производительности почему-то не встречается людей, действительно разрабатывавших серьёзно нагруженные приложения. Это сообщение отредактировал(а) GeneralElectric - 23.2.2008, 17:36 |
|||
|
||||
CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
Имелось ввиду что в шаблонизаторе используются регулярные выражения и в сложных шаблонах слишком часто происходит их вызов (много блоков / переменных и т.п.). Так ясно?
|
|||
|
||||
CyClon |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
Немного переписал, сделал, чтоли, "более абстрактным" xD Тем, кто искал простейший шаблонизатор, ловите...
Шаблон (templates/lite/main.html)
Шаблонизатор (kernel/classes/Template.class.php)
Использование (index.php)
Результат
|
||||||||
|
|||||||||
awers |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
ну чем же вам XML/XSL не угодили то? ведь все проще чем вы тут расписываете. могу дать код шаблонного движка который делал сравнительно недавно. Тут и блоки данных и динамическая подгрузка частей шаблонов. Тестовая версия..
modules/mod_templates.php
index.php
templates/elem/awers.xslt
templates/modules/common.xslt
|
||||||||
|
|||||||||
GeneralElectric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 13 Всего: 16 |
XML/XSL не угодили тем, что в них лежит китайская лапша - html перемешан с кодом, в большинстве случаев XSL кода больше, чем HTML. Как следствие, требуется отдельный программист на проект. Яндекс может себе это позволить. Другие обходятся решениями более гибкими.
|
|||
|
||||
awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
А как же генерация самих блоков? Или там все по взмаху волшебной палочки? Или пхп программист стоит дешевле чем HTML верстальщик со знанием XSL?
|
|||
|
||||
GeneralElectric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 13 Всего: 16 |
Видимо, дешевле =)
Вообще, популярнос шаблонов-лапши, таких, как XSLt или Смарти, сравнима с популярностью шлочных шаблонов. Так что я не возьмусь судить ,какой подход лучше, а какой хуже. Видимо, у всех есть свои положительные стороны. Другое дело, что XSLT, как верно было замечено, вносит дополнительное усложнение в среду разработки ,и не всегда это выгодно |
|||
|
||||
awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
Мой последний заказчик - дизайнер. Он меня чуть не расцеловал когда я ему показал знакомые, почти ХТМЛ исходники. Теперь сам вкуривает что как и жутко доволен. Если человек чайник - ему и с <!-- BEGIN blocks-left --> не справится. А XSLT дает явные приемущества, как по контролю ошибок в "десигн тайм" так и в "ран тайм".
|
|||
|
||||
GeneralElectric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 13 Всего: 16 |
Ну, возможно, ты и прав - все дело в субьективных ощущениях конкретных людей. кому-то нравится обилие кода в шаблоне, кому-то - нет.
правда, следует отметить, что прошлый проект "знакомых, почти ХТМЛ исходников" - ColdFusion - тихо скончался в нищете и забвении. По поводу же явных приемуществ по контролю ошибок я с удовольствием выслушаю конкретные факты. Думаю, остальным тоже будет интересно |
|||
|
||||
awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
я только начал вырабатывать концепцию, но смысл следующий: необходимо введение своего пространства имен, на нем собирать логику. это будет кратно быстрее смарти. над кешами я даже не начинал думать. вполне возможно что в Винград ЦМС войдет уже доработанная версия
|
|||
|
||||
GeneralElectric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 13 Всего: 16 |
Я тут решил машину собрать. Трехколесную. У трехколесных устойчивость выше. Конкретные факты - я пока ещё не думал, но собираюсь поркасить в зеленый цвет - должна получиться быстрее формулы 1.
Все ясно. |
|||
|
||||
awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
Ты посмотрел мой пример?
|
|||
|
||||
CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
awers, заинтриговал конечно, но все-равно мой вариант более простой для верстальщика.
Мне понравилось XSLT в твоем примере, гибко так. Но пока остановлюсь на своем варианте, ибо вообще с XML не дружу и не понимаю его смысл, как когда-то ООП ![]() ЗЫ: Результат обрабоки тех двух шаблонов какой будет? Добавлено через 2 минуты и 25 секунд P.S. Может даст кто ссылочку, где можно побольше почитать о взаимодействии XML/XSLT с PHP? |
|||
|
||||
GeneralElectric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 13 Всего: 16 |
Э, нет. Так не пойдет.
Вы, ребятки, не тестовыми шаблонами меряйтесь, а боевыми. Какой результат тех двух шаблонов - это и так ясно: такая же тестовая рыба. А нарисуйте-ка, оба, вывод строки навигации, вот, хотя бы, как в этом форуме: « Первая ... 3 4 [5] 6 7 ... Последняя » Вот и посмотрим, чего на самом деле стоят оба подхода =) |
|||
|
||||
CyClon |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
Смотри выше...
Ясно, что строки [1], 2 и т.д будут генерироваться скриптом тех же новостей. ЗЫ:
|
||||||
|
|||||||
GeneralElectric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 13 Всего: 16 |
Извини, но то, что ты сейчас здесь набросал на скорую руку - это не ответ на мой вопрос.
Где в твоем шаблоне выделение текущей строки? где вывод "первая", "полследняя"? С какой стати строка [1] будет генерироваться скриптом новостей? Почему оформление текущей страницы пишеть программист? А если дизайнер захочет не квадратные скобочки, а фигурные? Выделить болдом? Или вообще - картинку? Какой смысл мы вкладываем в шаблонизацию? Согласен ли ты, что в РНР коде не должно быть ни одного хтмл тега? Да, я знаю, что задаю неудобные вопросы. Не поддерживаю высокие разговоры об абстрактных материях и передовых технологиях. Я задаю практические конкретные вопросы. Но ответ на них как раз и проверяет правильность и жизненность всех этих красивых теорий. Поэтому у меня будет просьба: если уж ты решишь ответить, то отвечай не как это будет с точки зрения теории, а напиши конкретный, рабочий пример. Он все равно тебе пригодится, ведь постраничный вывод - одна из самых распространенных задач. Это сообщение отредактировал(а) GeneralElectric - 25.2.2008, 11:45 |
|||
|
||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Ничего нет в XSLT сложного. Есть HTML, есть управляющие команды. Конечно часть логики вынесена в шаблон. Но это логика отображения. И чтоб делать гибкий вывод, лучше уж пусть останется этот кусочек логики в шаблоне. Сложность "освоения" шаблона дизайнером зависит не от языка шаблонов. У всех шаблонизаторов суть примерно одна. И вряд ли дизайнеру будут нужны какие-то фундаментальные познания. Типа того как изменить приоритет включаемого шаблона или даже сделать собственный цикл. Если дизайнеру дается работающий XLST шаблон, то все что ему надо - посмотреть общую структуру страницы (здесь - правая колонка, тут - левая, тут - баннер и тп) и заменить старый HTML на свой, новый. И то, как быстро он это сделает, зависит скорее от того, насколько хорошо шаблон был комментирован и от его структуризации. Т.к. XSLT по сути - XML-дерево, то сделать в нем неудобное оформление весьма сложно. В любой момент можно автоматически выстроить дерево в каком-нибудь редакторе. По поводу комментариев. XSLT по своей природе блочен (xls:template). Если для каждой страницы сделать свои шаблоны, которые будут состоять из "обертки" сайта (<html>...) и отдельного файла шаблона на каждый раздел, то все и так понятно. index.php index_header.xls index_users.xsl index_chapters.xsl admin.php admin_header.xsl admin_rights.xsl admin_bans.xsl Пара комментариев в заголовке каждого файла - и у вас готовый учебник по XLST. К минусам XLST можно отнести негативные факторы древовидной структуры - управляющие структуры вынуждают писать много кода. Чтоб освоить xslt, надо 2 недели максимум. На моем опыте, дизайнер, не знающий XSLT, правил шаблоны XSL за 2 дня и все у него получалось отлично. Это сообщение отредактировал(а) flashaa - 25.2.2008, 12:33 |
|||
|
||||
awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
flashaa, "надо 2 недели максимум. " пошутил видимо? может ты имел в виду первое знакомство - 2 недели? или зря пишут книги по 2 тысячи страниц по XML/XSL? огромное количество вариаций....
GeneralElectric, с суть XML/XSL случаем не отчистка PHP от HTML тегов? даже морочиться писать не буду ничего для приведения примеров. Там в 10 строк кода. |
|||
|
||||
GeneralElectric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 13 Всего: 16 |
awers, спасибо за то, что ты опять со мной согласился, подтвердив абсолютную равнозначность XSLT любому ддругому шаблонизатору, суть которого сводится к очистке PHP от HTML тегов.
Учитывая же озвученную тобой чрезмерную сложность XSL, в связи с которой даже 10 строк кода представляют собой ощутимую по трудозатратам задачу, получается, что на свой вопрос - чем нам XML/XSL не угодили то - ты сам себе и ответил =) Это сообщение отредактировал(а) GeneralElectric - 25.2.2008, 18:00 |
|||
|
||||
awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
Оо упал в обморок. Я имел в виду что все настолько просто что я деже небуду на это заморачиваться. И к тому-же ниодин другой шаблонизатор не предоставит таких возможностей как XSLT. Передергивать мои слова ненужно
|
|||
|
||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Эээ. Ну как бы тебе сказать. На одном из рабочих мест я не знал XLST, но знание требовалось. На изучение его потратил 1 неделю. Через неделю уже во всю работал. Ну конечно во время работы подсматривал в мануалы и дальше что-то новое узнавал. Это обычное дело. Или с PHP ты никогда не совершенствуешься в процессе работы? Какие тысячи страниц. XML это максимум 100 страниц. В XSL теория займет тоже около 100 страниц МАКСИМУМ. Остальное - рациональные решения, наработки, которые можно писать бесконечно. А можно просто понять суть и дальше все само собой вытекает. ХSL стоит на нескольких китах. Просто несколько необычны они в сравнении с операцией замены {title} на "превед" ![]() Ах, да. При использовании XSL нужно знать XPath. А по нему наверняка тоже некоторые пишут тысячи страниц ) Это сообщение отредактировал(а) flashaa - 25.2.2008, 18:35 |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
Есть мнение, что заставлять писать человека xml это не гуманно и должно быть запрещено конвенцией ООН. Полностью согласен, там более когда им злоупотребляют, как в случае XLST-шаблонизатора.
|
|||
|
||||
awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
тогда PHP стоит запретить в первую очередь
|
|||
|
||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Ага. XML писать негуманно. А все остальное гуманно? Пусть ООН запретит вообще что-либо писать. И будет нирвана.
|
|||
|
||||
GeneralElectric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 13 Всего: 16 |
awers, не смог привести ни одного примера или простого и непротиворечивого доказательства превосходства XSL над другими шаблонизаторами. Все, что он говорит, в одинаковой мере присуще любым другим системам. Только голословные утверждения - "XSL быстрее всех", "XSL предоставляет такие возможности, которых у других нет". И ни одного догазательства
Я думаю, стоит прекратить эту беседу в стиле священной войны. |
|||
|
||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Забыл ещё аргумент в пользу XSLT. Он является некоторой абстракцией отображения. Т.е. часто шаблонизаторы работают с PHP. А XSLT поскольку работает с XML деревом работает на многих платформах. Во всяком случае, точно работает с Perl, и , возможно, с Java. Вообще будет работать везде, где есть поддержка XSLT-трансформации.
Если подытожить, то мое мнение такое - либо PHP-шаблоны, либо XSLT. В зависимости от сложности проекта, аудитории. Для коммерческих популярный сайтов, конечно, стоит отказываться от XSLT, ибо несколько тяжелее. В этом случае, имхо, использовать надо PHP или вообще менять платформу. Дополнительные шаблонизаторы - зло, потому что 1) стоят времени 2) добавляют нагрузки процессору 3) добавляет кучу классов/функций/файлов, в которых нужно дополнительно разбираться 4) без них легко можно обойтись И ещё. Если человек способен понять {title}, но не способен понять <xsl:value-of select="/page/@title"/> или <?php echo $title; ?>, то гнать такого в шею. Это сообщение отредактировал(а) flashaa - 25.2.2008, 19:06 |
|||
|
||||
awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
Брависсимо, но вы товарисч забываете что мы живем не в 10 веке, когда компутер совершал 4 операции в минуту. На моей слабой тачке, мой шаблонизатор обрабатывает страницу (из 4х частей по 4-10 кил каждый) плюс подключение к бд, статистика ... всего за 0,012 сек. Это очень ресурсоемко?
|
|||
|
||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
awers, ну и хорошо, что так. Но серьезные проекты так не делаются - "ну и пофиг, что мое решение больше тормозит. Все равно комп то мощный!". Хотя зависит все, как я уже сказал, от конкретной задачи. Если никак не удается найти дизайнера, который поймет <?php echo $title; ?>, то тогда да, решение оптимально.
|
|||
|
||||
awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
Я думаю что мало кто из Вас товарисчи делал такие сайты, где это было бы критично.
Давай рассмотрим ситуацию: есть время 86 400. Это кол-во секунд в сутках. Даже если работа скрипта займет 0,3 секунды - это уже 288 тысяч посещений в день. Логично? |
|||
|
||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Пусть приемлимо в плане производительности. Мне сам подход не нравится. Я писал так же и другие недостатки.
К тому же не люблю я шаблоны, которые занимаются заменой одних букв на другие. Мое убеждение - если мы собрали данные, которых достаточно для для вывода страницы, то их необходимо передавать шаблонизатору. А он уже с этими данными разбирается. В основном скрипте должна быть по максимуму логика, и меньше рутины. В частности, меньше рутины по отображению. Если не оставлять логики в шаблонизаторе, то необходимо либо навтыкать кучу кода по подготовке данных в основной скрипт, либо создавать промежуточный уровень между основным скриптом и шаблонизатором. Все это - дополнительное усложнение. При отображении сложных страниц, шаблонизаторы типа str_replace бессильны и огромные куски кода по работе с данными висят в скрипте. Например делал я когда-то большую многостраничную, многораздельную анкету. Скрипту необходимо получить названия полей ввода, значения и группы, в которых объединены поля. При использовании "умного" шаблонизатора, работа скрипта заключалась в выборке. При использовании простого - вся эта мишура по компоновке полей была в скрипте. При чем для разных разделов одна и та же мишура. Только с разными данными. Это сообщение отредактировал(а) flashaa - 25.2.2008, 19:41 |
|||
|
||||
awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
flashaa, именно это XSLT ))
|
|||
|
||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Да, с ОЧЕНЬ сложными страницами не справится. Я ж писал, что шаблонизатор выбирается в зависимости от задачи. В одном месте у меня есть сотрудничество с Перлом. Там используется XSLT-шаблоны. Для единообразия. К тому же там сайты не нуждаются в быстродействии. В остальных местах использую PHP. Это сообщение отредактировал(а) flashaa - 25.2.2008, 19:43 |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
XML это машинный формат по сути, и зачем его использовать там, где можно без него обойтись? Классический шаблонизатор удобнее из-за своей простоты. А как показывает практика, для дизайнера/верстальщика чем проще шаблонный язык тем лучше и продуктивнее его работа и работа коллектива. И он не отвлекает программиста и-за того что какие-то замуты из XSLT ему не понятны. Да и читается, и сопровождаются императивный код шаблонизатора лучше. |
|||
|
||||
awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
Машинный формат это 00101011 ... Или ты HTML и иже с ним тоже считаешь нашинным форматом? |
|||
|
||||
CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
Я не противник XML, я просто его слишком слабо знаю. Однако рекомендую всем почитать ну это только твоя предирчивость к словам ) не более того , может кого-то и направит на путь истинный
![]() |
|||
|
||||
flashaa |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Со сложностью XSLT согласен. Точнее не сложен он, а непривычен просто. По поводу "зачем использовать, если можно обойтись" - абсолютно такой же вопрос к кастомным шаблонизаторам типа смарти - зачем их использовать, если можно обойтись PHP.
Вот только как связаны работа дизайнера/верстальщика и работа остального коллектива? Обычно программирование идет параллельно с разработкой дизайна. Затем дизайн и шаблоны из "программерской" версии сайта скидываются верстальщику. Верстальщик работает, а остальные переходят к новому проекту. И зачем всем ждать верстальщика - непонятно.
Если читать мои предыдущие посты, то станет понятно, что если не заставлять дизайнера писать самому XSLT-шаблон с нуля, то его задача состоит в разборе стуктуры HTML-кода и замене старого HTML на новый. При этом он не трогает управляющие структуры, т.к. они связаны с логикой, а не с дизайном. Если меняется логика отображения сайта, то тут уже должен участвовать программист. Если в одном месте был список, то он не может с бухты барахты по воле одного верстальщика превратиться в таблицу. Вообще работа верстальщика - править HTML. И более ничего. Это сообщение отредактировал(а) flashaa - 26.2.2008, 13:02 |
||||||
|
|||||||
Daevaorn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
к словами придираешься? ![]()
И зачем? Я в шаблон передаю контекст данных, а тот кто пишет шаблоны эти данные интерпретирует так как ему надо, абсолютно меня не трогая. Он лишь иногда говорит, что тут мне нужна ещё эта информация, а тут другая. А чем сложнее шаблонный язык, тем чаще не-программист будут к программисту обращаться. Ну и потом, продолжаю настаивать на том, что xml слишком verbose и не для человека по сути. |
||||
|
|||||
awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
Daevaorn, еще раз переспрошу, ты считаешь HTML тоже слишком многословным и не для людей?
А C++ разве можно назвать языком для людей? Он вообще не в какие рамки по сравнению с XML |
|||
|
||||
solenko |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 34 Всего: 67 |
Начнем с того, что я сторонник использования php по прямому его назначению -- как шаблонизатора. И он прекрастно позволяет отделить логику от отображения.
Далее... Как факторы против такого подхода из этой темы: 1. Верстальщики не знают php. 2. Религия не позволяет Как предлагаемые альтернативы: 1. Свой шаблонизатор 2. Распространенный шаблонизатор 3. XML+XSLT Теперь давайте посмотрим на первый пункт для всех альтернатив: 1, 2 -- а что, тут своего языка не будет? Еще не видел ни одного шаблонизатора без встроенных условий, циклов и т.п. 3 -
все уже сказано до нас. намного сложнее чем базовый синтаксис php. Второй пункт и рассматривать не стоит -- против религии не попреш. Если есть еще доводы против использования php как шаблонизатора, то, пожалуйсто, приведите. Если нет, то все таки сводится к религии. P.S. Да, я прочитал тему целиком. Это сообщение отредактировал(а) solenko - 27.2.2008, 18:49 -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
Не все. Плюс php избыточен по сути для шаблонизатора. Можно ненароком что-то попортить. Шаблонизатор - как часть защиты от дурака.
Всё можно свести к "религии". Разве не религия писать сайты на php, а не на ассемблере например? |
|||
|
||||
solenko |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 34 Всего: 67 |
Daevaorn, "Верстальщики не знают php" -- должно было быть так. Опечаталя.
Что вы подразумеваете под "попортить"? Удалить файлы, дропнуть базу? Ну тогда такому дураку и к svn доступ давать нельзя.
Не религия, т.к. есть измеримый параметр -- время написания (есть и другие, но этот самый очевидный). А вот писать на php или ASP -- это уже религия ) -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
||||
|
|||||
Daevaorn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
Имею ввиду именно пхп. Т.е. позвать(случайно) какую-нибудь функцию с не очевидным side-effect, который повлияет на дальнейшую работу; присвоить какой-то переменной что-то чего в ней не должно быть и т.д. Поскольку пхп шаблонизатор живет в том же окружении что и логика, то отсюда могут появиться всякие неприятности. А вот отдельный хороший движок шаблонизации позволяет только получить доступ туда, куда указал программист и не более.
Ха! ![]() |
||||
|
|||||
solenko |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 34 Всего: 67 |
Вызвать функцию... Пожалуй прийдется согласиться. Можно, хоть и маловероятно. Опять же, обычно функции упакованы по неймспейсам. По поводу переменных -- в шаблоне работаем с глобальныйми переменными (они становятся глобальными при передаче управления в шаблон), все остальное вне глобального пространства.
Вы хотите сравнить разницу во времени написания сайта на РHP/ASP/Python и ASM? )) А если серьезно, то естественно, у каждого языка/технологии своя предметная область. У ASP и PHP они одинаковы, потому я и говрю, что выбор между ними -- впрос религии. Точно так же вы можно устроить холивар на сравнении, например, dBase, ForPro и Paradox -- тоже вопрос религии. -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
||||
|
|||||
SamDark |
|
|||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
Странно. Вы даёте верстальщику делать что-то кроме разметки (html+css)?
Я беру кучу статичных страниц, сделанных верстальщиком и перегоняю всё на шаблонный язык, будь то Smarty, XSL, php или ещё что. Верстальщик в данном случае не заморачивается с шаблонами вообще и не вносит хаос в приложение (особенно, если он не может изучить азы программирования). Получается быстро и безопасно. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
Daevaorn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
А если дизайн и соответственно верстка изменятся(пусть даже чуть-чуть) что, опять по новой?
Программист должен бизнес логику писать, а не разбираться, куда какой блок на странице переместить.
ну так и их можно попортить. шаблонизатор хотя бы может проверки делать.
Я лишь к тому, что время не является мерой "религии". |
||||
|
|||||
SamDark |
|
||||
![]() Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 10 Всего: 38 |
Daevaorn,
Если не сильно - правит программист. Если сильно - конечно по новой. Дизайн меняется после утверждения через год-два.
Это чистый server-side-программист. -------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
||||
|
|||||
flashaa |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Да, Daevaorn решил, что в основах работы PHP лежат потребности его фирмы
![]() |
|||
|
||||
GeneralElectric |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 797 Регистрация: 11.1.2008 Репутация: 13 Всего: 16 |
Вообще, на последних двух страницах тема превратилась в holy war, "бессмысленный и беспощадный" (это читата из классики, а не попытка кого-то оскорбить).
Каюсь, я сам приложил к этому руку. Но я всего лишь хотел объяснить адептам XSL, что их шаблонизатор не является уникальным, а ничем принципиальным не выделяется среди других. И ответил на вопрос, почему кто-то выбирает простой блочный шаблонизатор. При этом я нигде ни одним словом не говорил, что какой-то тип шблонизатора значительно хуже или значительно лучше других ,Что сейчас пытаются сделать некоторые участники. Давайте уже договоримся, что каждой задаче - адекватный инструмент, а не одна икона на которую молиться в любой ситуации. Другое дело - важно, как здесь, кажется, уже было сказано - основываться при выборе инструмента не а мифах, а на фактах. с этой точки зрения очень полезно развеивыать мифы о том, что XSL, к примеру, обладает какими-то уникальными возможностями, или что блочный шаблон верстальщик может править без программиста. |
|||
|
||||
TSVET |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 6.9.2007 Репутация: нет Всего: нет |
Первые версии PHP были написаны на CGI\Perl, был такой себе велосипед для велосипеда, который и задумывался как шаблонизатор.
Потом он стал отдельным языком, но всё-равно почему-то хотят и под него написать велосипед. Если тенденция продолжится, то и для шаблонизаторов начнут писать шаблонизаторы. Если бы PHP был досихпор написан на перле, то вышел бы "Велосипед для велосипеда, для велосипеда, который написан для велосипеда" ПХП сам по себе шаблонизатор. |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
||||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Daevaorn, вот зачем писать такие неконструктивные вещи?
Зачем вообще спорить с очевидным? TSVET прав. Так же, как и все другие выступавшие, со своими подходами. Да, ПХП - наиболее простой и очевидный из вариантов шаблонизации. но никто никого силком не тянет им пользоваться. Нравится тебе твое - используй. Не нравится чужое - ругай. Только аргументированно. А не так, как сейчас. Что, кроме флейма, ты ожидаешь получить в ответ на свой вопрос? |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
||||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
PHP
|
|||
|
||||
AntonShevchuk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.5.2008 Репутация: нет Всего: 3 |
Шаблонизатор должен разделять логику и отображение. Если Вы этого не понимаете - никакой template engine Вас не спасет. "Разделение" должно быть у Вас в голове, а получается, что многие считают - использую Smarty (и т.п.) - значит разделяю...
Если Вы считаете, что с шаблонизатором облегчаете жизнь дизайнерам - то посмотрите на Wordpress - сколько шаблонов дизайна создано людьми не знающими PHP, они всего-лишь читали мануал на сайте WP. P.S. Сам подсел на ZF - и очень доволен Zend_View... |
|||
|
||||
Валерия |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 10.3.2007 Репутация: 3 Всего: 8 |
ИМХО задача шаблонизатора, что бы дизайнер мог легко открывать в фронтпейдже/дримвювере и тп. редактор твои шаблоны и легко их редактировать НЕ ЛАЗАЯ В ИСХОДНЫЙ КОД ШАБЛОНА
|
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
а фронтпейдж не визивиг случаем?
|
|||
|
||||
Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Вот объясните мне... почему не делать последнее действие сразу? Т.е. писать шаблон сразу на PHP.... Это избавит от половины плясок с бубнами. -------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
Kefir |
|
|||
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: 13 Всего: 87 |
Fortop, хехе. хороший вопрос. просто всё это будет громоздко и некрасиво. можно, конечно можно сразу писать этот пхп. только согласись - намного лучше и удобнее как читать так и писать <p>{$name}</p>, чем <p><?php echo $name; ?></p>. а с появлением циклов и условий этот пхп можно будет показывать как страшилку В). а шаблонизатор - один раз написал и радуйся всю жизнь, пока не задолбает. вот и всё.
а вообще это ![]() |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
Fortop, пожалуй в тему про лучший шаблонизатор. единственный, как мне кажется, бесспорный факт, не выводящий тему в ранг религиозных войн: шаблонизатор должен предоставлять более высокий уровень абстракции, что сопровождается снижением контроля(к примеру, в том же smarty результат шаблонизации не отдается немедленно), но при этом - ускорению разработки(несмотря на то, что все же логика модели находится в РНР скрипте, который надо создавать кроме шаблона). так в теории. на практике, конечно, попадаются шаблонизаторы, не повышающие уровень абстракции.
|
|||
|
||||
Fortop |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Так и не понял. Чем вот это
плюс
Лучше такого
или вот такого
Ну, а если посмотреть на циклы в Смарти.... то все становится еще веселее. Удобочитаемость? Нет. Скорость? Нет. Скажите кеширование? Так, извините меня, кеширование вещь в себе, и с шаблонами связана слабо. Вот и не понятно мне, чем же лучше? Добавлено через 9 минут и 9 секунд IMO - Шаблоны и шаблонизаторы отзвуки тех далеких времен, когда MVC или понимание о правильном разделение логики-представления в PHP практически не существовало. Как результат велосипеды слабо повышающие уровень абстракции. Тот же Смарти... Мне сложно понять, почему не принять правило что все входящие данные должны обрабатываться следующим образом (это если без ООП)
И все. Все необходимые циклы на PHP, условный операторы тоже на PHP. Небольшая логика в отображении нужна - с этим все согласны... Тогда зачем псевдоконструкции? -------------------- Мир это Я. Живее всех живых. |
||||||||||
|
|||||||||||
skyboy |
|
||||||||||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
хм. я н говорил конкретно про СМАРТИ. хотя бы затем, что все переменные(суть - модель) инициализированы ещё до использования шаблона. и в процессе вывода, по идее, не должны меняться. PHP же предоставляет не только более широкие возможности, но и возможность написать подобное коду
псевдоязык того же СМАРТИ, раз уж про него(с XSLT практически не знаком, потому про него говорить не буду) предполагает вполне определенную область видимости. нет, конструкция assign тоже есть, но неудобство(как ті сам заметил) такой конструкции позволяет надеяться: переменые будут иметь однозначные и определенные в любом месте шаблона значения. вариации на тему переменных переменных и выполнение функции по её имени в виде строки в произвольной переменной если не улучшают стиль кода, упрощают отладку. я бы провел аналогию с C# и автоматического управления памятью, против С++ с ассемблерніми вставками и винегретом ссілок и указателей. смотря какой код. смотря какой код. вне зависимости от используеміх инструментов можно создать неудобочитаемый и дико тормозящий код. будем спорить? надеюсь, нет. тогда вопорс в другом: возможно ли используя язык разметки, основанный на XML со специального вида вставками читаться хорошо? мне почему-то кажется, что можно. можно ли при помощи подобного языка создать не тормозящий код? я думаю, это в большей мере зависит от компилятора(например, в случае со smarty - компилятор в РНР). так что за обобщенные оценки? ой, обобщать не надо. HTML-вставки любой РНР-скрипт превращают в шаблон. Добавлено через 2 минуты и 40 секунд
фи. у меня это выглядело бы так:
наверное, ни черта ни понятно в сравнении с
|
||||||||||
|
|||||||||||
Fortop |
|
||||||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
т.е. проблема в инкапсуляции? я правильно понял? Так и заводи отдельный массив/коллекцию/модель данных для вывода и тогда будет
Пока я понял, что ты возлагаешь на него ужесточение синтаксического контроля. Возможно это и выход... но... тогда уж действительно лучше перейти на другой язык.
У PHP пока еще не тот уровень абстракции, чтобы были эффективными такие финты ушами. Можно, прекрасно можно... но кто сказал что это будет лучше? Чем этот язык и специальные вставки будут отличаться от простейшего PHP синтаксиса? Да ничем. Кроме лишней прослойки, которая в итоге дает сомнительные выгоды (в виде простоты и понятности). Мы ничего не получаем. Я думаю, проще/дешевле и быстрее будет договориться о корпоративных стандартах кодирования... Получим тот же эффект. Я вот в свое время, слишком доверял одному разработчику ![]() В виде расставленных куда ни попадя @, бросания exception там, где достаточно просто вернуть false (например при пустой выборке из базы) и т.д. это
поправил
Как ты считаешь, это сильно отличается от твоего варианта ниже?
Заметь, в моем случае мы не учим "новые" операторы {} | ![]() -------------------- Мир это Я. Живее всех живых. |
||||||||||||||
|
|||||||||||||||
skyboy |
|
||||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
конечно, это надежнее, чем использовать систему, которая и не допускает реинициализации или unset переменных. если бы было проще договориться, не было бы ужасного кода. тебя смущает инициализация переемнных в пределах логики отображения? т.е.. к примеру, порядковые номер строки в таблице надо генерировать в пределах модели? создавать сущность "счетчик строки для таблицы №3"? сама по себе инициализация тоже ни плоха, ни хороша. но когда бы объявляем явно
как если бы мы использовали исключительно циклы for - это одно. а если "где ни попадя" может встретиться реинициализация - это другое. ты спросил, чем я считаю один язык лучше другого. я и пишу, что специализированный язык разметки(html) со слабыми механизмами логики в виде дополнительных вставок - лучше языка с мощной алгоритмической составляющей. лучше для реализации представления. лучше своей однозначностью, большей строгосьтю(те же переменные переменные, замыкания, вызов функции по имени в переменой и т.д.), и, следовательно, потенциально меньшей бажностью. можно пседоязык smarty, можно xslt. все равно. Добавлено через 4 минуты и 45 секунд зато надо знать, что
вернет false не только для значения false, но и для неустановленной переменной, числа 0, пустой строки, пустого массива и т.д. |
||||
|
|||||
Fortop |
|
||||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
меня смущает отсутствие простейшего разделения логики отображения и места где формируются исходные данные.
Это обязан знать любой программист на PHP. А верстальщику должно быть абсолютно безразлично, что это за код ![]() Главное его не трогать (код, а не верстальщика ) ![]()
Ты невнимательно смотрел мое предложение договоритесь о двух вещах. 1. массив $DATA_FOR_TEMPLATE может только читаться во всех представлениях. 2. Вызов или include всех представлений инкапсулируй в одной единственной функции Все.
Если разработчики не могут придерживаться этих 2х простых правил. То тогда кто тебе сказал, что при своих умственных способностях они разберутся в Smarty? -------------------- Мир это Я. Живее всех живых. |
||||||||||||
|
|||||||||||||
skyboy |
|
||||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
так потихоньку переходим к созданию CMS с разделением модулей согласно схемы MVC: сначала обрабатываются все модели, наполняя $DATA_FOR_TEMPLATE, потом выполняются код формирования представлений.
"всех" - это значит "всех", или "для каждого"? второе логичнее, потому как позволяет просто реализовать кеширование. в любом случае, необходима система кеширования. тем более, если $DATA_FOR_TEMPLATE неизменен, то обращение к одному и тому же представлению должно возвращать одни и те же данные(если содержимое детерменизировано). так мы наворотим тот же "шаблонизатор", но только на РНР + вызов специализированных функций. Как минимум, по сложности это не будет отличаться от спецвставок в HTML в том же СМАРТИ. Потому, как на меня, вариант с РНР ничем не лучше. В принципе, и не хуже. Разве что вопрос ограничений, о которых мы с тобой уже страницу говорим, в одном случае - вопрос договоренности, в другом - данность. |
||||
|
|||||
Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Это самый разумный вариант. Можешь предложить что-то лучшее? Конечно для каждого. Функция может быть универсальной. Всех сразу - не выгодно ![]() Не совсем так, оно детерменизировано в данном текущем вызове. Кто-то обещал, что оно будет таким же при следующем вызове?
Бритва Оккама - не плодите сущностей сверх необходимого... Еще один язык поверх PHP - на мой взгляд, пока это неразумно. -------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
т.е. представление от вызова к вызову при неизменных входящих данных не может иметь другой вид? к примеру, случайная фотография должна подсвечиваться на стороне модели? точнее, подсветка должна стать частью модели... а почему ж не возложить этот выбор случайного элемента на представление? речь только о том, что другой, отличный от РНР синтаксис? или о том, что CMS по модели MVC вносит свою структуру функци/объектов/классов и свою логику - забыли? или эти сущности под бритву Оккакма не попадают? ![]() Добавлено через 4 минуты и 22 секунды нет. предлагаемый механизм просто все ближе к шаблонизатору. только и того, что синтаксис отличается. логика работы(наполни модель, потом формируй представление) одна и та же, функциональность(циклы, условия - базовая логика в представлении) схожа. единственная претензия - другой подход к синтаксису(html + smarty vs. php + html). так? даже претензию на более высокий уровень абстракции я снимаю: CMS вполне в состоянии предоставить необходимое абстрагирование. итак, считаю, что шаблониазтор ничем не лучше CMS. но и не хуже. и не быстре, не медленнее в общем случае. |
|||
|
||||
Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Подсветка - часть представления. Выбор случайного элемента - часть модели. Я так считаю. Модель/Контроллер определяет, что выводить. Представление - как выводить. Совершенно верно. Вот смотри, сейчас для нормальной работы нужно знать 4 вещи SQL, PHP, HTML, JS. (можно обойтись без последнего, но сейчас не модно, да и впрочем не нужно обходиться). Ты предлагаешь добавить 5й элемент. Псевдоязык дополнительной разметки. Мне это не нравится потому что у нас уже есть 2!!! динамических скриптовых языка, которые полностью покрывают все область которую можно предумать для этого псевдоязыка. Я понимаю, была бы логика, если бы программа была на чем-то строгом и тяжелом в виде Java, C/C++ - Тогда да смысл упростить и облегчить есть (ввести легковесный динамический скрипт для логики разметки, хотя чем не угодил в таком случае XSL?)... В нашем же случае - не вижу смысла. Сын конечно близок к отцу ![]() ![]() Я уже говорил свое О, шаблонизаторы в PHP родились в то время, когда языку нехватало уровней абстракции, культуры программирования, идеологии..... Сейчас это все имеется в каком-то виде. Поэтому смысла в шаблонизаторах аля Смарти - я не вижу. Добавлено через 2 минуты и 41 секунду
Вообще-то, тут может быть ситуация размазанности функций Контроллера. Когда Модель будет представлять не только коннект к данным, но и существенную часть логики. Это то, что я хочу сейчас реализовать - мета-модель с включенной бизнеслогикой, которая будет объединять в себя более мелкие и простые аксессоры к данным. а представление тоже может распадаться на два уровня. -------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
ога. какие программисты бедные и несчастные ![]() т.е. если потребуется использовать mathML или SVG - люди начнут падать в обморок? я тут вижу: два императивных языка(php и js), причем один на стороне клиента, другой на стороне сервера; один - декларативный(sql) и один язік разметки(догадйтесь сами). дополнительный язык разметки при наличии справочника по основным конструкциям не должны смутить при любом раскладе. так же, как не должен вызвать конвульсий переход на VBScript или Perl. Да, другой синтаксис. Некоторые(совсем некоторые) вещи сделаны по-другому. но подход к программированию тот же. только синтаксис другой. Это сообщение отредактировал(а) skyboy - 2.8.2008, 22:39 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |