За последние 24 часа нас посетили 18028 программистов и 1653 робота. Сейчас ищут 1449 программистов ...

Модульность

Тема в разделе "Решения, алгоритмы", создана пользователем bambet, 27 окт 2009.

  1. bambet

    bambet Активный пользователь

    С нами с:
    6 окт 2009
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте. Как в большинстве CMS реализована структура, которая позволяет дополнять систему модулями?
    Интересует алгоритм, или может существуют готовые паттерны?
     
  2. ATI

    ATI Активный пользователь

    С нами с:
    3 янв 2008
    Сообщения:
    254
    Симпатии:
    0
    Адрес:
    Москва
  3. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    PHP:
    1.  
    2. <?
    3. function __autoload($class_name)
    4. {
    5.         $path = './modules/'.$class_name.'.inc.php';
    6.         if (file_exists($path) && is_readable($path))
    7.         {
    8.                 include($path);
    9.         }
    10. }
    11.  
    PHP:
    1. <?
    2. if(isset($_GET['run']) && check_module($_GET['run']))
    3. {
    4.         $object = new $_GET['run'];
    5. }
    6. else
    7. {
    8.         $m = cfg::PRIMARY_MODULE;
    9.         $object = new $m;
    10. }
    11. // Запуск модуля
    12. $spirit -> run($object);
     
  5. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    [vs]
    пцц написал примерчик =)
     
  6. Компот

    Компот Активный пользователь

    С нами с:
    27 окт 2009
    Сообщения:
    16
    Симпатии:
    0
    [vs] is_readable() сам по себе проверяет файл на существование

    ТС имхо хотел узнать про возможность подключить несколько модулей одновременно, а не подгрузить из класса контент страницы
     
  7. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    А это не очивидно. Чаще модули - это новости, архив, фотоальбом, страницы, магазин...
     
  8. Компот

    Компот Активный пользователь

    С нами с:
    27 окт 2009
    Сообщения:
    16
    Симпатии:
    0
    ну, вот и выведи мне тогда с помощью указанного выше кода на странице последние новости, рамдомную фотку, топовый товар, где всё перечисленное — методы соответствующих модулей
     
  9. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    В основном классе модуля news:
    PHP:
    1. <?
    2.         public $header = 'top';
    3.         public $alboom_random_photo = 'right';
    4.         public $mainmenu = 'left';
    5.         public $top_sale = 'left';
    6.         public $footer = 'bottom';
    что такое хеадер, альбом_случаный_фотография и верх_продажи движок узнает из специальной сигнатуры.
     
  10. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Компот
    дёрни метод, да выведи, чё за проблема?
    [vs]
    это шо за left bottom?
     
  11. Компот

    Компот Активный пользователь

    С нами с:
    27 окт 2009
    Сообщения:
    16
    Симпатии:
    0
    не, ну всё же, ради спортивного интереса спора, покажи как ты из
    определяешь что где показывать?
     
  12. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Mr.M.I.T.
    Это примерно как здесь.
    CMS'ка такая для однотипных сайтов. По логике - если дофига сайтов строятся таблицей, почему бы не зашить её в движок? =) В движке Xoops2 тоже в систему заложено позиционирование блоков по точкам лево-лево_центр-центр-право_центр-право, тока там под каждый блок таблица генерится.
     
  13. Компот

    Компот Активный пользователь

    С нами с:
    27 окт 2009
    Сообщения:
    16
    Симпатии:
    0
    всё-таки, модульность подразумевает не только создание галереи, но и интеграцию её в весь сайт.

    Могу согласится и заткнуться, если кто-нибудь скажет, что шаблон страницы точно так же, как и URI могут управлять поведением модуля
     
  14. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Я привел пример для $_GET['run'] = news.
     
  15. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Где ты в моем примере увидел шаблон? Там создается обект запрошеного по URI модуля и передается методу run класса spirit, который дерагет из него заданые интерфейсом методы. Модуль сам определяет, что будет отображено на странице.
     
  16. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Компот
    шаблоны нахера?
    бред какой
     
  17. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Эхх, наверное поэтому мой любимый xoops2 практически помер... дивный дизайн там фиг сверстаешь...
    Надо бы взять и написать мега-супер-пупер-cms South CMS. ;-)
     
  18. Компот

    Компот Активный пользователь

    С нами с:
    27 окт 2009
    Сообщения:
    16
    Симпатии:
    0
    хм, как бы объяснить. Возьмём сферического коня
    |-------------------------------|
    | $left | $center | $right |
    |-------------------------------|

    за $center отвечает тот же $_GET['run'] из примера [vs]
    а в $left и $right — всякие рандомные фотки, календари и т.д., причём в зависимости от основного модуля содержание $left и $right может меняться.

    А теперь вопрос: где должна быть информация о содержимом боковых разделов для конкретного модуля? Причём набор доступных модулей от сайта к сайту может разниться.
     
  19. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Как думаешь - я этот код нафигачил чтобы в тему запостить, или взял с нормально работающего движка?
     
  20. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    из говнодвижка?
    Компот
    кончай тупить,
    модуль совать в шаблон может, шаблон сам дёргать может, обёртка по урлу дёргать может, вариантов докуя
     
  21. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    [vs]
    когда напишешь обёртку над html?
     
  22. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Ну если все, что без продвинутых паттернов, считать говнокодом, то да =)
    [​IMG][​IMG][​IMG]
    ты взорвал мой мозг!
     
  23. Компот

    Компот Активный пользователь

    С нами с:
    27 окт 2009
    Сообщения:
    16
    Симпатии:
    0
    И кто тут тупит? учитывая, что после
    я привожу пример и получаю в ответ
    догоняй, черепашка :D
     
  24. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    [vs]
    чё идею подкинул? а чё будешь всем говорить мой суперМегаДвиСок не использует никаких там html! =))
    Компот
    урл ничем не уплавляет
    шаблон это вообще абстракция
    вопрос твой, имеет сотню решений, по кой ты спрашивал если знаешь?
     
  25. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Мозг взорвался когда я задумался над реализацией. Ну сам подумай, как это может выглядеть? =)