jer
...
создание модульной системы управления логикой и дизайном сайта (XML+XSLT)
Почитал я тут прошлогодний тред неимоверной длинны про CMS и концепцию постороения сайтов.
Которая переросла в споры насчет IE vs NN ;(
Так вот, предлагаю обсудить тему немного уже.
Во первых давайте разобъем управление сайтом на такие подсистемы:
Пусть вся система будет называться Back-Office, которая в свою очередь будет состоять из следующих основных подсистем:
1. CMS (Content Manager System) - подсистема наполнения сайта контентом (под контентом имеется в виду чистые данные, без какого-либо дизайна);
2. DMS (Design Manager System) - подсистема структуры и дизайна (что сложно отделить друг от друга), в идеале биснес-логики в чистом виде.
дальше могут идти подсистема статистики и другие вспомогательные подсистемы - это не так интересно (пока)
a) на данном этапе интересует вторая подсистема (DMS, может есть какое-то устоявшееся название? попровьте меня...).
b) разделение данных и их представления предполагается реализовывать через XML+XSLT
c) система должна быть универсальной, в том смысле что она должна быть модульной. т.е. есть ядро которое взаимодействует с модулями, а сами модули непосредственно реализуют те или инные функции. (т.о. получается что функциональность сайта будет зависеть от набора необходимых модулей)
( ...я сейчас реализую подобную систему, уже процентов на 50 готово... )
у меня получается следующая структура системы:
- система содержит набор модулей (которые можно удалять и инсталлировать)
- каждый модуль содержит блоки
- каждый блок имеет набор входных параметров + xslt шаблон (по умолчанию)
/*
пример:
новости (модуль)
- список новостей (блок)
- одна новость (блок)
*/
модули реализуются в виде классов, блоки в виде методов, например:
- сайт имеет набор страниц
- страница имеет имя + xslt шаблон (оперирующий xslt-шаблонами блоков установленных на странице) + надор блоков установленных на странице
- блок установленный на странице представляет из себя копию исходного блока со своими параметрами + xslt-шаблон (копию не класса или метода, а настроек блока)
вся конфигурация этой системы хранится в базе и при запросе страницы из базы выбирается блоки установленные на данной странице, собираются в единый xml-файл, xslt-куски блоков собираются тоже вместе.
потом выбирается xslt страницы, к нему присовокупляется xslt-блоков
потом делаем xml+xslt->html и плюем клиенту
я описал свою систему достаточно упрещенно, но для затравки думаю хватит.
--------------------------------------------------------------------------------------------------
так вот возникает вопрос, как унифицировать всевозможные блоки/ их интерфейс?
есть блоки которые просто выводят информацию из базы (новости, база товаров, статьи и т.д.), с ними вроде все просто получается, а есть интерактивные модули/блоки (в которых есть формы и их обработка, например голосование, корзина, регистрация и т.д.), так же есть модули/блоки невидимые (например, аутентификация, которая должна выполняться вперед остальных модулей).
т.о. получается, что надо ввести приоритетность выполнения блока
кто и как унифицирует интерфейс таких достаточно разных модулей?
и кто как реализовывал (если реализовывал вообще) wysiwyg javascript-редактор для xslt?
Интересуют мнения как практиков, кто уже создавал и имеют работающую систему, так и теоретиков думающих о ее создании.
Если кто-то писал/пишет подобную систему, интересны Ваши решения...
ps: Просьба не флеймить на околотематические темы...
Почитал я тут прошлогодний тред неимоверной длинны про CMS и концепцию постороения сайтов.
Которая переросла в споры насчет IE vs NN ;(
Так вот, предлагаю обсудить тему немного уже.
Во первых давайте разобъем управление сайтом на такие подсистемы:
Пусть вся система будет называться Back-Office, которая в свою очередь будет состоять из следующих основных подсистем:
1. CMS (Content Manager System) - подсистема наполнения сайта контентом (под контентом имеется в виду чистые данные, без какого-либо дизайна);
2. DMS (Design Manager System) - подсистема структуры и дизайна (что сложно отделить друг от друга), в идеале биснес-логики в чистом виде.
дальше могут идти подсистема статистики и другие вспомогательные подсистемы - это не так интересно (пока)
a) на данном этапе интересует вторая подсистема (DMS, может есть какое-то устоявшееся название? попровьте меня...).
b) разделение данных и их представления предполагается реализовывать через XML+XSLT
c) система должна быть универсальной, в том смысле что она должна быть модульной. т.е. есть ядро которое взаимодействует с модулями, а сами модули непосредственно реализуют те или инные функции. (т.о. получается что функциональность сайта будет зависеть от набора необходимых модулей)
( ...я сейчас реализую подобную систему, уже процентов на 50 готово... )
у меня получается следующая структура системы:
- система содержит набор модулей (которые можно удалять и инсталлировать)
- каждый модуль содержит блоки
- каждый блок имеет набор входных параметров + xslt шаблон (по умолчанию)
/*
пример:
новости (модуль)
- список новостей (блок)
- одна новость (блок)
*/
модули реализуются в виде классов, блоки в виде методов, например:
PHP:
class news
{
function news_list($args,$params) // $args - аргументы берутся из базы и передаются ядром при вызове блока
{ // $params - это переменные из стоки http-запроса
... здесь генерится xml код (данные берутся из sql-базы)
}
function news_one($args,$params)
{
... здесь генерится xml код (данные берутся из sql-базы)
}
}
- страница имеет имя + xslt шаблон (оперирующий xslt-шаблонами блоков установленных на странице) + надор блоков установленных на странице
- блок установленный на странице представляет из себя копию исходного блока со своими параметрами + xslt-шаблон (копию не класса или метода, а настроек блока)
вся конфигурация этой системы хранится в базе и при запросе страницы из базы выбирается блоки установленные на данной странице, собираются в единый xml-файл, xslt-куски блоков собираются тоже вместе.
потом выбирается xslt страницы, к нему присовокупляется xslt-блоков
потом делаем xml+xslt->html и плюем клиенту
я описал свою систему достаточно упрещенно, но для затравки думаю хватит.

--------------------------------------------------------------------------------------------------
так вот возникает вопрос, как унифицировать всевозможные блоки/ их интерфейс?
есть блоки которые просто выводят информацию из базы (новости, база товаров, статьи и т.д.), с ними вроде все просто получается, а есть интерактивные модули/блоки (в которых есть формы и их обработка, например голосование, корзина, регистрация и т.д.), так же есть модули/блоки невидимые (например, аутентификация, которая должна выполняться вперед остальных модулей).
т.о. получается, что надо ввести приоритетность выполнения блока
кто и как унифицирует интерфейс таких достаточно разных модулей?
и кто как реализовывал (если реализовывал вообще) wysiwyg javascript-редактор для xslt?
Интересуют мнения как практиков, кто уже создавал и имеют работающую систему, так и теоретиков думающих о ее создании.
Если кто-то писал/пишет подобную систему, интересны Ваши решения...
ps: Просьба не флеймить на околотематические темы...