Hoi,
ik ben bezig met een cms (de zoveelste). Ik zal even kort mijn huidige opzet uitleggen:
Ik heb een aantal modules. Bijvoorbeeld de module 'contentpage'. Deze module is voor het maken van standaard pagina's met tekst/plaatjes. Iedere module heeft een class en een mainfile. De class bevat alle functies die betrekking hebben op een contentpage, ook de adminfuncties. In de mainfile worden de acties geregeld, de mainfile van contentpage ziet er als volgt uit:
Iedere module heeft in de db zijn eigen tabel. De tabel mod_contentpage bevat:
De modules staan geregistreerd in de tabel modules. Met de velden:
Er is een tabel menu in de database waaraan de modules gekoppeld kunnen worden. Deze tabel bevat:
In de index.php wordt alles afgehandeld. Het menu wordt opgebouwd uit de database. Een link naar een contentpage is dan als volgt:
index.php?menu_id=1&mod_id=1&page_id=1
In index.php wordt dan aan de hand van de mod_id de bijbehorende mainfile van die module opgehaald en ingeladen.
Nu zit ik dus met iets wat ik eigenlijk anders opgelost wil hebben. In de tabel menu staat namelijk extraurlvars. Daarin staat dus in het geval van een contentpage bijvoorbeel page_id=1. Omdat je meerdere contentpages kunt hebben moet de mainfile van contentpage wel weten welke page hij moet inladen. Ik heb het idee dat ik mijn menu gewoon fout opbouw.
Is er een andere manier om dit op te lossen? Ik zit er nu al een tijdje mee te prutsen, maar kom er niet echt uit. In principe werkt het zo dus wel, alleen is het voor een leek natuurlijk niet echt fijn als hij een veld voorgeschoteld krijgt waarin hij 'page_id=1' moet gaan plaatsen, of andere rare dingen. Ik heb ook al naar bestaande cms'n gekeken zoals cpgnuke. Maar die hebben voor zover ik zie geen modules in het menu staan die meerdere pagina's kunnen hebben.
Ik hoop dat deze post een beetje duidelijk is. Hij is langer geworden dan ik gehoopt had, mocht er iets opgehelderd moeten worden dan doe ik dat graag.
ik ben bezig met een cms (de zoveelste). Ik zal even kort mijn huidige opzet uitleggen:
Ik heb een aantal modules. Bijvoorbeeld de module 'contentpage'. Deze module is voor het maken van standaard pagina's met tekst/plaatjes. Iedere module heeft een class en een mainfile. De class bevat alle functies die betrekking hebben op een contentpage, ook de adminfuncties. In de mainfile worden de acties geregeld, de mainfile van contentpage ziet er als volgt uit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| <? $CP = new Mod_Contentpage(); switch($_REQUEST['c_action']) { case 'showform': if(isset($_REQUEST['page_id'])) { $CP->showForm($_REQUEST['page_id']);} else { $CP->showForm();} break; case 'add': $CP->add(array('title'=>$_POST['title'], 'content'=>$_POST['content'])); break; case 'delete': $CP->delete($_GET['page_id']); break; case 'showall': $CP->showAllPages(); break; default: $CP->showPage($_GET['page_id']); break; } ?> |
Iedere module heeft in de db zijn eigen tabel. De tabel mod_contentpage bevat:
code:
1
2
3
| id title body. |
De modules staan geregistreerd in de tabel modules. Met de velden:
code:
1
2
3
4
| id name mainfile active |
Er is een tabel menu in de database waaraan de modules gekoppeld kunnen worden. Deze tabel bevat:
code:
1
2
3
4
5
6
7
| id label mod_id parent extraurlvars sort active |
In de index.php wordt alles afgehandeld. Het menu wordt opgebouwd uit de database. Een link naar een contentpage is dan als volgt:
index.php?menu_id=1&mod_id=1&page_id=1
In index.php wordt dan aan de hand van de mod_id de bijbehorende mainfile van die module opgehaald en ingeladen.
Nu zit ik dus met iets wat ik eigenlijk anders opgelost wil hebben. In de tabel menu staat namelijk extraurlvars. Daarin staat dus in het geval van een contentpage bijvoorbeel page_id=1. Omdat je meerdere contentpages kunt hebben moet de mainfile van contentpage wel weten welke page hij moet inladen. Ik heb het idee dat ik mijn menu gewoon fout opbouw.
Is er een andere manier om dit op te lossen? Ik zit er nu al een tijdje mee te prutsen, maar kom er niet echt uit. In principe werkt het zo dus wel, alleen is het voor een leek natuurlijk niet echt fijn als hij een veld voorgeschoteld krijgt waarin hij 'page_id=1' moet gaan plaatsen, of andere rare dingen. Ik heb ook al naar bestaande cms'n gekeken zoals cpgnuke. Maar die hebben voor zover ik zie geen modules in het menu staan die meerdere pagina's kunnen hebben.
Ik hoop dat deze post een beetje duidelijk is. Hij is langer geworden dan ik gehoopt had, mocht er iets opgehelderd moeten worden dan doe ik dat graag.