Web-приложение. Связанность модулей.

XtremallyPurpur

Новичок
Web-приложение. Связанность модулей.

Добрый день.

Сайт может содержать "разный" тип контента: статьи, сервисы (например, расписание движения и т.д.).

Хочу сделать нечто универсальное (в общем случае) для всех приложений на сайте, и в будущем, чтобы можно было использовать в других разработках.

Есть следующие модули "Комментарии", "Статьи", "Расписание". Я использую частности, чтобы проще донести суть вопроса.

Итак, в текущем проекте я хочу использовать комментарии для любого типа контента. Я подключаю свой модуль с комментариями в админке и каждый из модулей (т.е. контент, который выводит модуль) имеет возможность быть "откомментаренным" пользователями.

Предположение 1:
Таким образом получается, что КАЖДЫЙ из модулей обязан знать о существовании модуля "Комментарии".

Предположение 2:
Если я хочу подключить, скажем, модуль "Рейтинг контента", для каждого модуля, получается также - каждый из модулей должен знать о существовании модуля "Рейтинг".

Не могу понять я вот что:
Можно ли как-то разделить модули, чтобы каждый из них не обязан был знать, подключен ли модуль "Комментарий", например.

Пока писал, вот что подумал...
В принципе же, модулю "Комментарий" совершенно фиолетово кто его подключил... В параметрах запроса родительского модуля от пользователя приходят (гетом ли, постом ли, неважно) id модуля и id контента, а сам модуль "Комментарий" комментарии будет хранить в базе с соответствующими родительскими ids. Главное в админке сделать его активным, и сделать его (комментарий) настраиваемым, т.е. выводить для такого-то и такого-то уже существующего (активного) модуля (контента).

Спасибо, всем кто осилил все, что я написал.
Все ли я правильно подумал, или кто-то по-другому реализует?
 

clevel

Новичок
я вот тоже сейчас насчет независимых модулей думаю, как реализовать. Пока мысль слежующая:
1. есть отдельная таблица, где указывается какой модуль к какому объекту привязан. Это необходимо, так как в одном случае родителский объект - корневой (страница), в другом - 1-го уровня (стятья), в другом - 2-го(топик форума).. Возможны доп. пораметры для запуска этого модуля, которые также можно разместить в этой служебной таблице.
2.для того, чтобы знать, что на странице есть такие модули, ставим флаг в таблице страниц - есть/нет. если есть - лезем в эту таблицу и находим необходимые модули, подключаем их. Дополнительно можно поле ordinal сделать, чтобы регулировать порядок вывода модулей, а также свойства "публикация".
 

XtremallyPurpur

Новичок
Вообще, наверно, можно сделать так:
1. Есть таблица, в которой хранится дерево модулей, таким образом можно описать взаимосвязь модулей (parent-child).
2. Т.к. каждый из модулей имеет id и каждый из элементов контента этого модуля имеет свой ids, каждый связанный модуль может хранить данные основываясь на id родительского модуля и на id родительского объекта контента.

Т.е. получается то же самое, как я и в предыдущем посте написал.

Тогда встает вопрос об "actions" модулей (т.е. как Вы написали в 1 (доп. параметры для запуска)). Т.е. по сути получается, что в таблице связей модулей надо хранить взаимосвязь actions модулей.

По 2:
2. Поле "ordinal" для порядка вывода или для порядка включения модулей ядром?
Ведь порядок вывода вполне можно реализовать шаблоном структуры страницы.
 
Сверху