Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Организация шаблонов, Ищу лучшый вариант 
:(
    Опции темы
Diesel Draft
Дата 13.8.2007, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: нет
Всего: 5



Привет мальчики и девочки. Вот пишу я ЦМС. Знаете я всегда удивлялся з людей которые прутся написать свою ЦМС. ЦМС с такой архитектурой нигде найти не мог, ну кроме asp (ЦМС composite) и то даже на 70% не задовольняет. Все система создает сама себя. Поэтому шаблонизатор нужен очень хороший.

Ну что, это был маленький вступ. Я хочет посоветоваться на счет несколько вещей. Даже не посоветоваться, а-а-а-а обговорить. Когда я обговариваю реализацию то сам поминаю лучше мыслить. И думаю может кому то будет интересно.

Немного про архитектуру. Сайт поделятся на две части : администратор и сам сайт.  Когда открываешь страничку то создается класс этой страницы, которая походит от class Page, который в свою очередь походит от class Block. 
По очереди запускаются методы класса
     public function OnInit(){}     
     public function OnPostData(){}     
     public function OnAjax(){}  або public function OnRend(){}  

Можно вставлять блок в блок. Сейчас я делаю так: сначала я инициализирую страницу, где кроме настроек еще создаю под блоки, которые в свою очередь инициализируются и могут иметь под блоки. Все это происходит в рекурсии.
Потом рекурсивно выкликаю OnPostData() где считую входные даные.
Потом обрабатывать данные в OnRend() или OnAjax() в зависимости от запроса.

А теперь проблема. Когда я вызываю OnRend() то он включается рекурсивно в жаждем блоке. Тоесть блок имеет текст которые видренедил его под блок. А когда вставляю то приходится писать
Код

<xsl:value-of select="/xml/Block" disable-output-escaping = "yes" />

А мне это ни нравится. И потом з кэшированием сложно. 
Я думаю использовать вставки в шаблон.  Тоесто на выходе, когда уже блок выдренедерилса, я ищу вставку и заменяю на контекст блока. Тоесть я в шаблоне решаю когда что вставить. И не надо предварительно инициализировать бод блоки.


Пример:
Код

      <div class="managerdiv">
        $$blokname;
      </div>


Это значит что надо загрузить блок blokname.

1. Стоить так менять?
2. Какая должна быть вставка ($$blokname; или другая)?


П.С. Ребята, как же неймспейсов не хватает  smile 

Это сообщение отредактировал(а) Diesel Draft - 13.8.2007, 11:15


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
Diesel Draft
Дата 13.8.2007, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: нет
Всего: 5



Ау, я думал эта тема соберет людей желающих помочь советом.


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
qeqeru
Дата 3.9.2007, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 28.8.2007

Репутация: нет
Всего: нет



Если честно пока читал, по пути расстерял весь смысл... 
... кароче, ничё не понятно...   smile 
PM MAIL   Вверх
ewolf
Дата 3.9.2007, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: 1
Всего: 18



Я правильно понял, что идея в том, что один файл шаблона может включать в себя другой файл, при этом каждый файл шаблона (который ты называешь блоком) выводит некоторые данные, которые ему предоставляет соответствующий обработчик на php?

Соответственно, чтобы определить какие обработчики загружать ты предварительно разбираешь шаблон.

Теперь же ты хочешь вызывать сразу все обработчики, передавать результаты их работы в шаблон и там просто вставлять переменные?

Ну, можно сделать и так и эдак.

Я бы правда сделал по другому. Сделал бы некоторый конфиг, где для каждой страницы указал какие обработчики загружать, а в шаблоне просто выводил переменные. В таком случае шаблонизатором тебе вполне подойдет смарти
PM MAIL ICQ   Вверх
SamDark
Дата 3.9.2007, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 0
Всего: 38



Вот-вот. Второй раз писать заново Smarty не стоит... Лучше его и попользовать...


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Diesel Draft
Дата 4.9.2007, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: нет
Всего: 5



SamDark, Это точно не смарти.


Цитата(ewolf)

Теперь же ты хочешь вызывать сразу все обработчики, передавать результаты их работы в шаблон и там просто вставлять переменные?


Не все, я вызывал только нужные и рендерю их в переменную.


Цитата(ewolf)

Я правильно понял, что идея в том, что один файл шаблона может включать в себя другой файл, 

Не другой файл, это другой класс. Если б файлы я б просто это сделал


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
ewolf
Дата 5.9.2007, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

Репутация: 1
Всего: 18



Ну, если честно, я тогда не понимаю, о чем спрашивается в первом посте. Чего конкретно хочется сделать и в чем проблема?
PM MAIL ICQ   Вверх
Diesel Draft
Дата 5.9.2007, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: нет
Всего: 5



Проблема в том что я хочу з шаблона выбирать что мне грузить


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
SamDark
Дата 5.9.2007, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 0
Всего: 38



Diesel Draft, 
Smarty:
Код

{smartblock type=managerdiv val=$data}



--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Diesel Draft
Дата 5.9.2007, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: нет
Всего: 5



а, то самое но на XSL

Добавлено через 1 минуту и 35 секунд
php-функцию вставлять можно но не хочется, просто иногда шаблон реагирует человек з кривыми ручками


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
SamDark
Дата 5.9.2007, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 0
Всего: 38



Код

<xsl:template match="managerdiv">
...
</xsl:template>



--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Diesel Draft
Дата 5.9.2007, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: нет
Всего: 5



SamDark, ты тогда вставляешь кусок з того самого шаблона.

А можно как нибудь организовать колбек?


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
SamDark
Дата 5.9.2007, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 0
Всего: 38



Diesel Draft, 
1. С какого того самого?
2. Зачем тебе колбэк? (Организовать можно).


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Diesel Draft
Дата 5.9.2007, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: нет
Всего: 5



у смотри, я в шаблоне делаю колбэк функции, она генерирует блок и отдает назад.


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
SamDark
Дата 5.9.2007, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 0
Всего: 38



Diesel Draft, 
Это неправильно. Шаблон не должен получать данные самостоятельно без контроллера.

Но если уж очень хочется: http://ru2.php.net/manual/ru/function.xslt-set-object.php


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0532 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.