За последние 24 часа нас посетили 16134 программиста и 1666 роботов. Сейчас ищут 896 программистов ...

Как сделать модули для сайта?..

Тема в разделе "Прочие вопросы по PHP", создана пользователем EvelRus, 28 окт 2008.

  1. EvelRus

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

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Собственно вопрос... как сделать CMS модульную? или как она там правильно называется...

    Суть:
    Есть папка modules в нее будут складываться файлы с дополнениями к CMS при этом они должны использовать саму систему и вызываться из корня сайта... В даминке должна быть кнопочка типа вкл/выкл, настроки там и т.д... Но как все это организовать я даже на русском не понимаю :(( ОБъясните или пните в правильном направлении... что-то я по яндексу побегал, но ничгео толкового не нашел
     
  2. dAllonE

    dAllonE Guest

    Nemo, поковыряй любую модульную CMS у всех ведь по разному реализовано.
     
  3. EvelRus

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

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    но какой-то общий алгоритм же есть....
     
  4. kostyl

    kostyl Guest

    Nemo
    -есть модель MVC... это раз
    -никогда не делал и не видел... но думаю движок сперва надо для управления модулями, а не просто include, чтобы он тебе сразу мочил есил будет ошибка ну и всё такое...
    -ну если н движок то какаято стандартность... если никак не придумаешь, начни делать все как обычно, но по стандартам, имеется в виду, называй все по стандартному, например шаблоны там tpl потом название где используется потму поараметрыы, будешь делеть делать - глядишь и некоторые вещи общяковые вырисовываются, просто это лучше замечать когда делаешь сразу всё стандартизированно...
     
  5. dAllonE

    dAllonE Guest

    Nemo, ну например:
    1. Все запросы перехватываются одним файлом.
    2. Этот файл инициализирует все нужные постоянно объекты, в нем же живет автолоад.
    3. Затем он анализирует URL и ищет, что он таки должен выдать.
    4. Подгружает файл модуля, на данном этапе доступно все что есть в ядре в полном объеме.

    или

    1. Есть несколько файлов до которых можно достучаться изначально.
    2. В самом начале каждого из них reqire_once('megastarter.php');
    3. В megastarter.php объявляем все функции, проверяем все что нужно проверить и т.д.
    4. Дальше в твоем модуле доступно все что есть в ядре в полном объеме.

    Ну и так далее.

    P.S. второй вариант чуточку легче изначально но по мере роста проекта сложность поддержки возрастает по экспоненте ;)
     
  6. EvelRus

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

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Я не знаю что это такое ;))) Поэтому мне не гразит :)

    А можно ли как-то присвоить переменной результат работы другого файла??? но и саму переменную вывусти где надо :))
    что-то типа

    $main = include ('1.php');
     
  7. decoder

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

    С нами с:
    11 фев 2006
    Сообщения:
    469
    Симпатии:
    0
    Можно.
    в инклуд-файле делай return $result;
     
  8. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    PHP:
    1. <?
    2. ###################
    3. # Тут всякие конфигурации, инициализация системы и тд
    4. ###################
    5. /*
    6. $moduls и $activ_moduls формируются автоматом, например из БД
    7. */
    8. $moduls=array("search"=>"Поиск","freeback"=>"Обр. Связь");
    9. $activ_moduls=array("search");
    10. $act=$_GET['act'];
    11. if ($moduls[$act] &&  in_array($act,$activ_moduls)) {
    12.    print "Мы в ".$moduls[$act];
    13.    include "moduls/".$act.".php";
    14. }
    15. ?>
     
  9. Mete0

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

    С нами с:
    18 дек 2006
    Сообщения:
    272
    Симпатии:
    0
    Адрес:
    Gatchina
    Mr.M.I.T.
    Идея простая, но код ужасен. :)
     
  10. EvelRus

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

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Mete0
    а как красиво сделать? )))
     
  11. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    ну да, хочешь чтобы я такое написал :)
    PHP:
    1. <?
    2. include "header.php";
    3. // бла бла бла
    4. include "footer.php";
    5. ?>
    ?
    нормальный код
     
  12. EvelRus

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

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    смешно :)))))))
     
  13. Mete0

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

    С нами с:
    18 дек 2006
    Сообщения:
    272
    Симпатии:
    0
    Адрес:
    Gatchina
    Mr.M.I.T.
    Нет пример который ты написал, выглядит ужасно. В плане реализации.
     
  14. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    хмм, не поверишь, у меня больше нет идей на этот счёт =)
    как ещё можно это реализовать?
    (можно конечно вообще убрать $activ_moduls, больше идей точно нет)
     
  15. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Я так вижу модульность:
    1. В базе данных есть таблица с модулями, статус которых проверяется при сборке страницы
    2. В главном шаблоне есть место под вывод модуля

    Таким образом, при установке модуля мы ставим шаблон, контроллер модуля и делаем записи в базу (добавляем в таблицу модулей и включаем показ).
    Если модуль является разделом, то можно в ЦМС сделать таблицу, в которой хранятся шаблоны УРЛ и файлы, отвечающие за работу модуля.
     
  16. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Kreker это плагины ИМХО
    у меня в двиге для этого есть объект plugins который вставляется в шаблон и отуда уже вызываются методы (если нужно)
     
  17. EvelRus

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

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Mr.M.I.T.
    подробнее, плииз :))
     
  18. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Модуль - это элемент конструкции. Плагин - механизм для работы элемента.

    Если бы все модули подключались копанием в двиге, а не установкой через админку, то сайты бы с нуля все разрабатывались.
     
  19. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Kreker
    у меня наверное проблемы с формулировками
    взять например поиск,авторизацию и облако тегов
    что здесь будет модулями а что плагинами?
     
  20. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Это и есть модули ИМХО (хотя точно знаю, что в пхпнюк, site-express тоже это называют модулями)
     
  21. dAllonE

    dAllonE Guest

    Ну чисто ИМХО:

    1. Поиск -> Модуль.
    2. Авторизация -> Ядро
    3. Облако тегов -> плагин к блогам.
     
  22. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    dAllonE
    Хотя ты на 100% прав.
     
  23. QQQ

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

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    Nemo
    с самого создания слежу за топиком
    мог бы тоже предложить множество советов
    но реальный ответ дал был тебе сразу:
    добавлю лишь, что несколько шопов/CMS.. действительно вариантов множество
     
  24. Mr.M.I.T.

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

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    dAllonE
    Я тоже так думаю =)
     
  25. тшшш... ща дагдамор прибежит, и будет тебя убеждать, что иметь константу PhpcPreloadPlugins($string) - круто %)