Создание модулей для CMS

Тема в разделе "PHP", создана пользователем асс, 12 апр 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. асс

    асс

    Регистр.:
    13 окт 2006
    Сообщения:
    756
    Симпатии:
    221
    Здравствуйте. Интересует такой вопрос.
    Есть у меня сркриптец, хочу сделать чтоб работал на модулях.

    К примеру есть папка mod
    в нее кидаю файлики
    mod_menu.php
    mod_news.php
    mod_top.php


    и так далее.

    Так вот мне надо чтоб скрипт автоматически подключал моды, если они есть в папке.
    допустим смотреть скриптом папку mod и искать там файлы который имею часть строки mod_


    а сами моды выводить на страницу буду через
    preg_match("#^(.*){%mod%}#iUs", $index, $head);

    Честно варианта незнаю как реализовать лучше.
    Вот нужен ваш совет.
    Хочу сделать CMS простенькую чтоб разобраться в написании подобных скриптов.
     
  2. ewg777

    ewg777

    Регистр.:
    6 авг 2007
    Сообщения:
    763
    Симпатии:
    321
    PHP:
        $dh  opendir("mod");
        while (
    false !== ($file readdir($dh))) {
            if (
    $file != "." && $file != ".." && strstr("mod_",$file)) {
                
    $ok[]=$file;
            }
        }
        
    closedir($dh);
     
    асс нравится это.
  3. Ton

    Ton Постоялец

    Регистр.:
    20 май 2007
    Сообщения:
    55
    Симпатии:
    9
    Модули лутче хранить в отдельных папках и пути к этим папкам хранить в config файле а не шарится по винту при каждом вызове страницы.
     
  4. jID

    jID Постоялец

    Регистр.:
    12 фев 2008
    Сообщения:
    106
    Симпатии:
    31
    Скажем, вызов модулей на сайте у тебя будет вида: site.ru/?page=main
    и в каждом модуле, в начале, определяется переменная $module_name.

    Вот примерно такой получается код:
    PHP:
    $page=$_GET['page'];
    $module_name "";
    chdir("mod");
    foreach (
    glob("mod_*.php") as $f) {
      if (
    "mod_".$page.".php"==$f)
        include(
    "modules/$f");
    }
    chdir("..");
    if (
    $module_name=="")
      include(
    "mod/mod_404.php");
    т.е. если модуль, заявленный в $page не найден в папке с модулями, то грузится модуль, отвечающий за выдачу 404.

    Вопрос спорный. Мои опыты с xdebug показали что время ползанья по папке ничтожно мало и им можно принебречь. А что касается отдельных папок про модули - делал так, и решил что это довольно неудобно. При обновлении файлов по FTP приходится больше тыкаться по папкам. Учитывая, что по FTP это делается не мгновенно, начанает напрягать.
     
    асс нравится это.
  5. Ton

    Ton Постоялец

    Регистр.:
    20 май 2007
    Сообщения:
    55
    Симпатии:
    9
    Время ползанья по папке ничтожно мало когда ты один пользователь на своём сайте просто HDD это самый медленный девайс и с ним надоб быть поосторожней.
    Модуль это какой то отдельный функционал и пихать его в общую кучу как-то не целесообразно, ну в общем кому как.
     
Статус темы:
Закрыта.