De opbouw van een CMS systeem
Ik ben er nog niet helemaal over uit hoe ik het ga opbouwen, maar ik denk dat elke module (contact, fotoboek, gastenboek etc..) in de web-root komt met daarin de nodige verwijzigingen naar de templates.
Verder zijn er twee belangrijke templates: header.tpl, footer.tpl, hierin staan dus de footer en de header.
Ik heb ook een page-module waar de klant zelf statische pagina mee kan aanmaken voor zijn site (routebeschrijving, over ons bedrijf, etc..) en met Multiviews maak ik die URLs netjes (http://site.nl/pages(.php)/routebeschrijving))
Wat vinden jullie van het idee? En hoe zouden jullie het doen, of hoe hebben jullie het gemaakt en ingedeeld?
Menu, Header, Content, Footer, en bedenk ze zelf verder maar ;)
Een module zou ik doen in een map: modules, en in je tabellen zetten welke modules zijn ge-activeerd. In die map modules heb je een map staan met de naam van een module, een XML bestandje met omschrijving (of die doe je wel in je database) van de module, en de overige bestanden. AFhankelijk van de pagina kan je de items (Menu/ Header/ Content) uitlezen en teruggeven.
Je kan op deze manier heel eenvoudig en snel uitbreiden, module installeren, hij wordt herkend, dan kan je hem activeren en gebruiken in het systeem.
Waarom zou je pages meenemen in je URL? In principe moet je gewoon alles door kunnen sturen naar je index.php en aan de hand van de GET gegevens daarachter (mod-rewrite) gewoon kan lezen. De 'map' page zoals je die nu hebt staan doet verder niets, voegt niets toe en een zoekmachine heeft daar ook niets aan. Wie zoekt er nu op "pages routebeschrijving"?
Je kan voor je menu gewoon gebruiken
Dus "pages" is geen map...
En ik heb zelf ook cms geschreven,
over map structuur:
+ Admin
- index.php
- pages.php (pagina's bewerken?)
- miss users.php ofzo (als je je klant ook nog gebruikers wilt laten gebruiken)
+ File_Uploads: kan de gebruiker alles in uploaden(of je kunt dit via db doen)
- pages (als je multiviews gebruikt, persoonlijk zou ik voor mod_rewrite zijn, als die beschikbaar is)
En ik zou mezelf ook nog de vraag stellen, OOP of gewoon alles met functies (met modules is OOP logisch oké)
Over template parsers: gewoon zelf eentje schrijven, gewoon smartie(zijn de meesten aan gewent) of gewoon helemaal geen parser en gewoon php(is meestal nog sneller ook(Zie roberts post))
Succes ;)
Gewijzigd op 01/01/1970 01:00:00 door Jeffrey H
Nu terug naat het punt. Ja ik heb mijn eigen cms. Het mijne is een systeem waar er kolom gegevens (type enz) uit de database worden omgezet naar overzicht tabellen en edit formulieren. Dit in combinatie met een omweg binnen het probleem van MYSQL voor de reationele database heb ik (al zeg ik het zelf) een eenvoudig maar flexibel systeem ontwikkeld.
Tevens maak ik altijd een tabel aan waarin de de menu-item koppel aan gegevens over de pagina die hij moet compilen, maar daar schrijf ik altijd weer losse modules voor.
misschien niet het meest eenvoudige verhaal maar dat geheel terzijde...
Bart:
Even voor muggenzifters onder ons, CMS (content management system) gaat over het onderhouden van de content. Ik begrijp (als buitenstaander) even niet wat een template farser daar in moet.
@Bart, ja we weten wat CMS betekend, en kijk maar is naar de grote voorbeelden: Joomla, Typo3, mambo, etc.
En die hebben (ALLEMAAL) een template parser.
Eigenlijk word het dan:
Website Management System??
Gewijzigd op 01/01/1970 01:00:00 door Jeffrey H
Zend Framework gebruikt views welke multi inzetbaar zijn. Ik heb zelf een globale map (boven alle modules) waarin een aantal default views staan. Vanuit elke module/controller/action kan ik hiernaar verwijzen (of indirect via een andere view).
Het klinkt wellicht als abra-ca-da-bra, maar ik vind het heerlijk werken, veel vrijheid, veel vastigheid en goede uitbreidbaarheid (heb ondertussen mijn eigen bibliotheek naast die van Zend, mijn bibliotheek is een uitbreiding.
Een CMS als Joomla! is veel te uitgebreid in veel gevallen, je hebt er niets aan als je duizenden opties hebt die je niet gebruikt, of waar je meer kennis voor moet hebben.
Wat ik wel belangrijk vind bij een CMS is dat je verschillende gebruikslvls hebt. Niet iedereen mag dezelfde dingen doen, en dat moet ook gecontroleerd worden. Je hebt natuurlijk dan ook de vrijheid om met 1 gebruiker (superuser) te werken. Daarnaast moet het ook zo zijn dat als je een uitbreiding schrijft dat die eenvoudig te installeren is. (in principe mapje plaatsen en hij kan gebruikt worden, indien gewenst eerst accepteren binnen het cms)
Vergeet ook niet een installatie-bestandje te schrijven voor het cms, dat werkt wel zo prettig en je hoeft niet alles handmatig in te stellen in de code.