Ostatnio zaczalem pisac CMSa. Moze go krotko opisze. Prosze o wszelkie uwagi, co zrobilem zle, ktore moje zalozenia sa zle itp.
Wiec tak:
Wszystko oparte jest o klasy, funkcje i szablony(Smarty).
Glowny plik kernel.php ma kilka swoich funkcji a pozatym includuje wszystkie inne pliki z glownymi klasami i pozniej robi jak na przykladzie:
Kod
$this->error = new error();
$this->db = new db($dbhost, $dbuser, $dbpass, $dbname, &$this->error);
$this->config = new config( &$this->db );
$this -> config -> load();
$this->db = new db($dbhost, $dbuser, $dbpass, $dbname, &$this->error);
$this->config = new config( &$this->db );
$this -> config -> load();
Jak widzicie (&$this->db) w ten sposob zrobilem dziedziczenie jednej klasy i innej.
zrobilem tak poniewaz np. klasa config potrzebuje obiektow z klasy db.
kernel laduje moduly i bloki:
To jest index.php
$cms->get_header();
$cms->load_module("news");
$cms->get_footer();
A w kernel.php wyglada to tak:
include("blocks/block_".$array['title'].".php");
$this->blocks[] = $this->smarty->fetch( $this->config->vars['SITE_THEME'] . '/blocks/block_'.$array['title'].'.tpl' );
A pozniej tylko:
$this->smarty->assign( 'blocks', $this->blocks );
I bloki ladnie sie pojawiaja.
Moduly sa w pliku block_modules.php i sa jednym z blokow. W phpnuke zauwazylem ze nie ma pliku z modulami w /blocks ale jest wszystko brane z mysqla.
Moj plik block_modules.php wyglada tak:
$this->smarty->assign( 'menu', $this->installed_modules );
i juz sobie w szablonach ustawiam reszte. Teraz w planach jest zrobienie panelu administracyjnego ale nie wiem jak zrobic system uprawnien.
Chcialbym zeby kazdy blok czy modul mogl byc instalowany lub kasowany. Wiec jak sobie zrobie tak jak to jest w jportalu to nic z tego nie bedzie..
Wiec pierwsze pytanie: czy to co napisalem wyzej idzie dobrym tropem zeby stalo sie cms'em.
A drugie: jak zrobic porzadny system uprawnien (kazdy admin moze miec rozne uprawnienia, np. jeden dodawac newsy i zatwierdzac tylko swoje newsy, inny moze zatwierdzac wszystkie newsy + artykuly itp.).
Dziekuje za wszelkie uwagi i slowa krytyki :]