![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk Страницы: (13) Все « Первая ... 5 6 [7] 8 9 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]() ![]() ![]() |
|
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 |
Дизайнеру/верстальщику этот максимум не нужен. Им нужен удобный, просто и быстрый способ извлечения данных. При этом с защитой от дурака, чтобы ничего не сломать в логике случайно. Собственно для того шаблонизаторы и есть. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |