Создание CMS Модульная система

Модульность – залог живучести системы, благодаря модульности к орбитальной станции МКС можно пристыковать новый отсек, заменить старый и тем самым нарастить необходимые мощности. В программных системах точно также, но есть одна тонкость, из-за которой модульность может стать головной болью для программистов-разработчиков.

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

В реальном мире не возникает трудностей взять фотоальбом и написать в нем что-то поясняющее фотографию. Можем тоже самое сделать в книге, в тетрадке да даже на стене можем рисовать. Что бы мы не рассматривали, ко всему действуют одни и те же законы вселенной, поэтому мы можем воздействовать на любые объекты, правда результат наших действий, скорее всего, будет разным. И мы совершенно не имеем представления, что находится за гранью нашей вселенной.

Если провести аналогию и вспомнить недавнее умозаключение, что система управления содержимым сайта обеспечивает взаимодействие объектов данных, то в этом случаи система как вселенная управляет законами взаимодействия объектов и, чем бы ни являлся объект, к нему будут применены общие законы. В таком случаи, создавая модуль каталога для системы, для представления данных нужно использовать объекты системы как материю вселенной, а сам модуль при необходимости будет расширять законы системы.

Продолжение следует.

Модульная система
1 vote, 3.00 avg. rating (78% score)

Комментарии

  1. Иван:

    Проблема с добавлением комментарием (как пример) или еще чего к другим модулям мне видится вполне решаемой.

    главное придумать и реализовать верный интерфейс взаимодействия.

    для комментариев можно поступить так:

    комментарии выделить в отдельный модуль «комментарии»
    этот модуль должен на вход получать «уникальный во всей системе ID» того к чему будет эта лента комментарием (новость, фотография, статья). так как все эти (новость, фотография, статья) есть не что иное как другие модули, а каждый элемент этого «другого модуля» будет содержать элементы контента (ай ди новости, ай ди фотографии, ай ди статьи) то можно сделать «уникальный во всей системе ID» из связки ID_модуля + ID_элемента_модуля

    и того получаем такую схему:

    список модулей
    ————
    ID Модули:
    ————
    1 Новости
    2 Стати
    3 Фотографии

    ————
    ID Новости
    ————
    1 новость 1
    2 новость 2
    3 новость 3

    ————
    ID Статьи
    ————
    1 Статья 1
    2 Статья 2
    3 Статья 3

    соответственно комментарии будут такие

    ——————————————
    ID | ID_модуля | ID_записи_модуля | коментарий
    ——————————————
    1 | 1 | 1 | комментарий к новости 1
    2 | 1 | 2 | комментарий к новости 2
    3 | 2 | 1 | комментарий к стате 1
    4 | 1 | 3 | комментарий к новости 3
    5 | 2 | 3 | комментарий к стате 1

    собственно модуль комментарии можно прицепить к любому другому модулю, однако если для каждого модуля будут различные структуры комментариев (я имею в виду не вид отображения, это можно решать разными шаблонами/наследовательностью модулей и так далее) а конкретно в одном месте комментарии в виде рисунка, в другом в виде текста, а в третьем еще как-то то тут нужно будет либо делать универсальность модуля комментариев, либо делать различные модули комментарием….

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

  3. Антон:

    Вынашивал схожую идею 5 лет. Вначале мне все твердили что это не решаемо. С третьей попытки сделал наконец! Теперь доделываю последние штрихи (система имеет кодовое название Е5), буду рад списаться с автором (емайл оставил), с радостью поделюсь своими решениями.
    Как у меня решается проблемма с комментариями?
    1. Есть модуль Комментарии с одной таблицей данных Комментарии, доступной для внешнего использования и таблицей Шаблоны комментариев для внутреннего использования
    2. Делаю модуль «Новости» в нём делаю таблицу «Новости» и присоединяю к ней таблицу Комментарии (которую мы создали выше). Таким же образом можно прикрепить и фотографии и т.д.
    Естественно это всё делается натыкиванием мыши в админке. Без всяких PHP и MySQL.
    Уфф… столько всего можно рассказать… Но пока не буду. Если Владимиру интересно — спишитесь со мной.

Комментировать



(обязательно)


(обязательно) E-mail адрес не будет отображаться на сайте

(обязательно)