Вот эахотел сделать CMS

aprok

Новичок
Вот эахотел сделать CMS

Вот захотел сделать CMS .
Но не как не пойму как должно выглядеть ядро и модули к нему.
Как я понимаю ядро эта проста файл, который подключает модули
по запросу и выполняет этот запрос, перед этим он проверяет, если это модуль
в папке с таким названием как пришел запрос
www.mysyte.com/index?modul=mod1&var1=4&var2=5
запрос обрабатывает модуль под названием mod1 ,файлы модуля должны хранитца
в папке под названием mod1.
Данные о подключённых модулях должны хранитца в базе данных ?
если нет как динамически добавлять в меню о том что можно работать
тем ли иным модулем
Модуль я думаю разделить на 2 главные части
1, которая обрабатывает запрос, который пришел и отображает результат
2 Админская часть модуля которая автоматам должна видна в главной
админскай системе CMS.
Если я не прав, то поправьте меня или напишите, как должно быть.
 

Krishna

Продался Java
[off]Кто хочет продолжить веселье - сделайте поиск по всем поставм афтара.[/off]
 

MustDie

Новичок
aprok
скачай себе PHPNuke
и пасмари... некаких ядер нету)
прост оесть главнй фаил - в котором будет проверятся все.. что нужно

а потом в модулях будешь его загружать через include();
он тебе будет все проверять.. и т.д. а потом только выполнятся модуль...
потом будешь вводить ссистему скинов и т.д.)

-~{}~ 02.03.06 21:31:

aprok

www.mysyte.com/index?modul=mod1&var1=4&var2=5

создай фаил module.php
и проверяй в нем значение переменной - допустим - name

module.php?name=[название модуля]&[тут будут приходить переменные]
и пусть в
module.php
будет проверка.. и загрузка указанного модуля, например из-папки /modules/[имя модуля]
через include();
 

malganus

Новичок
MustDie

PHPNuke - авангард технологий программирования на PHP, ребята до сих пор не понимают, что передавать название модуля в строке запроса совершенно бессмысленно. Архитектура PHPNuke как CMS слишком далека от идеала...
 

MustDie

Новичок
есть смылс... оригинальность.. и удобство использования модуля...
у каждого свои причуды...
 

ilkz

Новичок
У меня сделано так:
Есть базовый класс-ядро. Он умеет строить меню, управлять meta-информацией, также предоставляет кое-какие сервисные методы.
Далее, есть модули. Они тоже являются классами, но уже наследниками от базового. Соответственно, в зависимости от выбранного пункта меню загружается тот или иной модуль, который наследует базовый модуль-ядро.

-~{}~ 04.03.06 23:43:

Автор оригинала: malganus
MustDie

PHPNuke - авангард технологий программирования на PHP, ребята до сих пор не понимают, что передавать название модуля в строке запроса совершенно бессмысленно. Архитектура PHPNuke как CMS слишком далека от идеала...
А как тогда передавать скрипту какой модуль ему надо загрузить? Че-то не очень понятно...
 

texrdcom

Новичок
ilkz
иди читай книги - ядро умеет строить меню...
Ты етим убил
Автору топика чтобы написать стоещею ситему прийдеться переписьовать код не единожды,
если хочешь улсышать конкретные овтеты задавай конкретные вопросы
 

MustDie

Новичок
А как тогда передавать скрипту какой модуль ему надо загрузить? Че-то не очень понятно...
а зачем ему передавать?

http://www.mysite.ru/module1/
http://www.mysite.ru/module2/
...
http://www.mysite.ru/moduleN/

передаватся будут они ссылками...
 

baev

‹°°¬•
Команда форума
передаватся будут они ссылками...
Чем?
Подробней, плиз, механизм опишите.
Ну и заодно — чем «ссылка» отличается от «строки запроса»?
 

MustDie

Новичок
как механизм еШе??? :confused:

можешь делать меню ручками и сам писать адреса...
можешь генерировать адреса и все...
скрипт при добавлении модуля.. будет создавать ему путь... по вышепреведенному примеру... http://www.mysite.ru/moduleN/
 

aprok

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


PHP:
<?

class jadro
{

	var $modul='';// class modul
	var $modul_name=''; //nama modul 
	var $index_modul='mod_index'; //define modul
	var $menu=array(); // menu v CMS
	var $smarty=''; //class Smarty
	var $skin='default'; //skin CMS
	
	
	function jadro()
	{

	$this->assignModul(); //proverka modul
	$this->modul = $this->_factory(); //zagruzka modul
	
	}
	
	
	 function display() //formirovanie ctranisi
	 {
	   $server = &$this->_importGlobalVariable('server');
	   include_once($server['DOCUMENT_ROOT'].'include/'.setup_smarty.php);
	   $this->$smarty = new Smarty_setup;
	   $this->smarty->assign('meta_tegs',$this->modul->display_meta_tegs());
	   $this->$smarty->assign('menu',$this->menu());
       $this->$smarty->assign('modul',$this->modul->display());	
       $this->$smarty->template_dir = $server['DOCUMENT_ROOT'].'include/templates/skin/'.$this->skin; 
	   $this->$smarty->display('index.tpl');		
	 }
	
	 
	 
     function _factory($options = '') //zagruzka modul
    {
        $server = &$this->_importGlobalVariable('server');
    	$modul_path = $server['DOCUMENT_ROOT'].'include/modules/'. $this->$modul_name.'/'.$this->$modul_name.'.php';
        $modul_class = $this->modul;

        require_once $modul_path;

        return new $modul_class($options);
    }
    
    

    function assignModul() //proverka modul
    {
        $get = &$this->_importGlobalVariable('get');

        if (isset($get['modul'])) {
            $this->$modul_name = (get_magic_quotes_gpc() == 1 ? stripslashes($get['modul']) : $get['modul']);
            if (!file_exists($server['DOCUMENT_ROOT'].'include/modules/'. $this->$modul_name.'/'.$this->$modul_name.'.php'))
                $this->$modul_name=$this->index_modul;
        }
        else 
        {
           $this->$modul_name=$this->index_modu;
        }
        
     }
    
     function menu()//formirovanie menu  (array)
     {
     	
     }
    
        function &_importGlobalVariable($variable)
    {
        $var = null;

        switch (strtolower($variable)) {

            case 'server' :
                if (isset($_SERVER)) {
                    $var = &$_SERVER;
                } else {
                    $var = &$GLOBALS['HTTP_SERVER_VARS'];
                }
                break;

            case 'session' :
                if (isset($_SESSION)) {
                    $var = &$_SESSION;
                } else {
                    $var = &$GLOBALS['HTTP_SESSION_VARS'];
                }
                break;

            case 'post' :
                if (isset($_POST)) {
                    $var = &$_POST;
                } else {
                    $var = &$GLOBALS['HTTP_POST_VARS'];
                }
                break;

            case 'cookie' :
                if (isset($_COOKIE)) {
                    $var = &$_COOKIE;
                } else {
                    $var = &$GLOBALS['HTTP_COOKIE_VARS'];
                }
                break;

            case 'get' :
                if (isset($_GET)) {
                    $var = &$_GET;
                } else {
                    $var = &$GLOBALS['HTTP_GET_VARS'];
                }
                break;

            default:
                break;

        }

        return $var;
    }
}
 

MustDie

Новичок
нечего...
твоя CMS'ка ты и должен думать че изминить, а что добавить...
 

ilkz

Новичок
Автор оригинала: texrdcom
ilkz
иди читай книги - ядро умеет строить меню...
Ты етим убил
Я не совсем правильно выразился. Ядро строит дерево документа, в котором содержится все основное (меню в т.ч.). А уже модуль, если ему надо может это дерево как-то менять/дополнять (контентом, например :) ).
 

mit

Новичок
Народ. Ведь это старая тема и все уже давно набили оскомину рассуждая и давая где-то правильные, а где-то не правильные советы. Сейчас какой-то бум с этими CMS. Человек пару дней изучающий php уже хочет написать СВОЮ CMS. Банально, не правда ли? Вам бы для начала хотябы с HTML (ну может JS) хорошо выучить.

Ядро CMS - это набор функций, классов (для работы с БД и др.), на основе которых уже строятся все остальные модули системы. У каждого модуля, в свою очередь, есть свои классы и функции, которые нужны ему (модулю) для работы.

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

MustDie

Новичок
mit

при написании своей CMS (только для себя) отачиваются и преобретаются новые наваки...
человек учится... так как CMS ему нужно больше всего... у него есть стремление изучить PHP и далее работать с ним...
 

mit

Новичок
Так что если я начал изучать C/C++, то мне для приобретения новых навыков нужно писать свою Windows???
 

MustDie

Новичок
а ты подумай!

-~{}~ 05.03.06 17:18:

написание CMS - это лучше чем читать и переписывать листинг учебников и т.д.
Это очень хорошая практика...

а ты если такой умный - то пиши ОС...
 

px

Новичок
Ядро, как уже сказал mit - это "набор функций, классов (для работы с БД и др.)", а модуль - это некая сущность(класс, функция или что-то другое, всё зависит от конкретной реализации), которая реализует опред. функционал. Допустим есть модуль контента и его задача вывести 5 статей. Чтобы вывести эти статьи модуль пользуется функциями для доступа к бд, которые заложены в ядре, затем он (модуль) вызывает другой модуль - модуль шаблонизатора и передаёт ему массив со статьями. Шаблонизатор "применяет" к шаблонам данные полученные от модуля контента и вывводит их.
Доступно объяснил? :)
 
Сверху