![]() |
|
![]() ![]() ![]() |
|
dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: нет Всего: 137 |
Да спасёт тебя Великий Ctrl+Shift+F в Зенде ![]() Сергей. Основным недостатком данного подхода считаю блочность. Ты базировался на PHP-Nuke? Да, он болеет этим, и это плохо. addRightGroup -- скажи, а если колонок не две, а три? А если на главной странице 4 колонки, а внутри 2? А если контентный блок есть ещё в шапке (а он обычно есть -- хотя бы баннер)? То есть на уровне движка рулить "лево-право" считаю неправильным. Далжен быть просто addGroup, а рулиться эти группы должны в шаблонах (core.xslt or smth.) Потому что поменять местами право и лево -- это, согласись, дизайн, а не логика. А дизайн должен быть в шаблонах, чтобы потом не пришлось гоняться по всем кодам и менять право с левом. Потом. Всегда считал неверным пляску от action'a. Я придерживаюсь подхода, при котором сначала загружается базовый шаблон, а потом уже он определяет, что делать дальше (обычно у меня он делает просто <xsl:apply-templates /> -- это аналог твоего поведения, но у меня это лечится, а у тебя нет). И нет такого понятия, как "xslt текущей страницы" или т. п. А у тебя есть шаблон, который зависит от текущего экшена. Честно, не скажу, почему твой подход мне не нравится. Чисто интуитивно -- теряется универсальность. Но сидел думал час, так и не смог придумать примера -- всё же обычно основной контентный блок ровно один, а остальное замечательно вписывается в core.xslt. Придумаю -- скажу ![]() P. S. В concat(concat( , вроде, нет необходимости -- эта ф-ция понимает сколько угодно параметров? ![]() |
|||
|
||||
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
dm9, дельные вещи говоришь.
|
|||
|
||||
sergejzr |
|
||||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
И с чего вы взяли, что этото пример определяет поведение будующей CMS? Я слепил пару блоков для наглядности, чтобы показать как их можно будет подгружать и отображать в XML/XSL, а совсем не собирался направление задавать. Про сам движёк ПХП я даже не думал. Ещё раз ![]() Пример показывает, как можно осуществить модульность + локализацию на XML/XSL (с того топика и ссылается), а совсем не диктует, где что будет находиться и как грузятся модули (тем более, что они автоматом из БД должны грузится в зависимости от настроек.) Универсальность не теряется, наоборот повышается модульность. Написал ПХП генерящий ХМЛ + ХСЛ шаблон для него. Вот и готовый модуль.
Разве concat не 2 параметра понимает? В С, ПХП, Мускул это вроде та. Добавлено @ 14:53 Гы ![]() ![]()
От чего нибудь всегда надо плясать. Универсально "для всего" один шаблон написать не получится, сколькими ты его функциями не пичкай. Универсальность хороша там, где не важны конкретные особенности. И универсальность всегда обратно пропорциональна скорости выполнения и времени написания. Чем конкретнее модуль, тем лучше его и делать конкретнее. |
||||
|
|||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Почитал про concat. Действительно, удобно. Надо будет переделать.
В принципе я так и думал группам просто имена давать, а в шаблоне разбираться, куда с каким именем лепить. Но это просто надстройка над тем ядром, которое я написал. Просто на бесконечном уровне абстракции надо намного больше времени для работающего варианта. |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Гы! Я понял, почему неразберишка вышла. Из за того, что я назвал группы left и right. Господи, да замените лево/право не синее/зелёное, или 1/2. Естественно, что в конечном итоге XSL решит куда, какую поставить и лево направо поставит, если юзер захочет. А пример на то он и пример, чтобы понятным быть. Проблема подхода apply-templates в том, что уже ХМЛ в этом случае орпеделяет структуру выхода. Это не всегда надо. Не получится все элементы назвать по-разному, чотбы не дублировать инфу. А если у тебя дав одинакого названных элемента с разным содержанием, то придётся в apply-templates передавать параметр, определяющий. Так какая разница получается тогда в apply-templates и call-template? Мой подход больше похож на вызов функции. Какую надо, ту и вызываем. Да, теряется универсальность при которой бросиш кусок ХМЛ и шаблон тебе его отпарсит сам, но здесь встаёт то факт, что ХМЛ определяет положение элементов, а я хочу, чтобы это делал исключительно шаблон. |
|||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: нет Всего: 73 |
Я тоже за call-templates. Однако мне кажется что AddGroup это не совсем то что нужно. Есть определенный набор шаблонов который определяет основной вид страницы и ее блоки, между тем модули генерируют XML и уже на выходе определяют какие шаблоны должны рулить содержимым и какие блоки должны присутствовать.
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Повторяю, AddGroup просто добавляет группу в CMS. Где она будет оторбражена (и будет ли отображена вообще) всё ещё решает шаблон естественно. Он может решать это в зависимости от ХМЛ. Это уже по вкусу. Добавлено @ 15:35 |
|||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: нет Всего: 73 |
sergej.z, понял))) В общем тут идет просто вызов модуля и все.
В принципе это уже все будет на уровне ядра. Которое, как я надеюсь, в эти выходные выложу для тестов. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
||||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: нет Всего: 73 |
Раз это так здорово, я там два маленьких файлика кинул для затравки. Это что-то вроде примера интерфейсности и абстрактности системных классов. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
sergejzr |
|
||||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Тут кстати проблема с подгрузкой неопределённых ХСЛ шаблонов. А именно: Нельзя в коде ХСЛ подгрузить шаблон, определённый в ХМЛ или где нибудь ещё. Если бы это было возможным, многое стало бы легче. пример: <xsl:include src="$какая_то_переменная.xsl"> нельзя! Я неsсколько недель над этим бился. ХСЛТ такого на позволяет. Единственно, где можно динамически определить имя шблона - в генерируемом ХМЛ . Один раз при загрузке. Поэтому я сделал подгрузку ХСЛ модуля в первую очередь, а он уже тянет вполне определённые ХСЛ (core, header, footer) Добавлено @ 17:45
Как только появится возможность, посмотрю (где то послезавтра вечером) |
||||
|
|||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: нет Всего: 73 |
sergej.z, а что мешает делать import в шаблоне?
К примеру включаемый XSLT шаблон имеет имя вроде file-003154.41.5151.5615.1.xsl При запросе пользователем там компануется XSLT шаблон на сервере, я так сам делал. -------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: нет Всего: 259 |
http://sergejzr.jino-net.ru/vcms/ мёртв
![]() Добавлено @ 23:39 Оп, прошу прощения, не мёртв! Но хочу обратить внимание что в Опере ничета не работает |
|||
|
||||
IZ@TOP |
|
|||
![]() Панда-бир! ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4795 Регистрация: 3.2.2003 Где: Бамбуковый лес Репутация: нет Всего: 73 |
smartov, опера тихонько курит в сторонке.
-------------------- Один из розовых плюшевых-всадников апокалипсиса... очень злой... Семь кругов ада для новых элементов языка Мои разрозненные мысли |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Компановать ХСЛ динамически конечно можно. Только с кэшированием надо всё правильно определить. В принципе неплохое решение. Хотя конечно с ХСЛ файлами было бы элегантнее, но если нам возможность не дают (кстати, кто нить знарт, почему?)... |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Vingrad CMS | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |