[PHP] Code voor CMS centraal beheren

Zit ik qua visie verkeerd? Want ik zie even de bomen door het bos niet meer. Stick with me.

Ik ben bezig met een CMS. Ik heb hierbij een basisversie, met een aantal standaard modules en dergelijke. Beschouw dit als een standaardversie met standaardfiles voor zowel de website zelf als de backoffice. De database wordt centraal beheerd, met standaardtabellen gevuld met content van diverse websites die op het CMS draaien.

Wanneer een klant zijn website op dit CMS wil laten draaien, worden de standaardfiles van zowel de backoffice als frontoffice naar een directory met de naam van de website gekopiëerd. Er wordt als het ware een instance genomen van de standaardversie. Vervolgens wordt de layout opgebouwd met een stylesheet. Dit gebeurt omdat er regelmatig maatwerk moet gebeuren aan het systeem voor bepaalde klanten, en ik zodoende geen geknoei in de standaardfiles krijg.

Wanneer er nu een nieuwe versie van de standaardversie van het CMS wordt uitgebracht (met bijvoorbeeld een nieuwe of aangepaste module, verbeteringen qua beveiliging,…), zou het al te gek zijn om bij alle instances (websites) te moeten copy pasten. Pagina’s vergelijken is ook geen optie, want het admin scherm of een module kan bijvoorbeeld soms flink verschillen door serieus maatwerk.

Hoe kan dit opgelost worden?

Van welke programmeertaal maak je gebruik?

[quote:ac2a8cd54a="Kevin Berkhout"]Van welke programmeertaal maak je gebruik?[/quote:ac2a8cd54a]

PHP, zoals aangegeven in de topic titel.

[quote:0634af609b="iBert"][quote:0634af609b="Kevin Berkhout"]Van welke programmeertaal maak je gebruik?[/quote:0634af609b]

PHP, zoals aangegeven in de topic titel.[/quote:0634af609b]
Sorry, had er overheen gelezen.
Als alle website’s draaien op 1 server is het misschien een idee om alle “standaard” modules te includen?

Ik neem aan PHP. Bij Mambo en Joomla kun je gewoon een update draaien zonder dat de aangepaste site in looks wijzigt. Tenzij je net als ik in de broncode (buiten de templates) gaat lopen aanpassen. Dan heb je net als ik een iets lastiger upgrade traject. Wil je gemakkelijk updaten, probeer dan alle aanpassingen binnen de templates te doen (en daar kan veel in!)

Ik zou de standaardmodules zoveel mogelijk in klasses verwerken en al het specifieke maatwerk per website "extenden" aan die klasses. Dan moet je enkel maar de basismodules upgraden bij nieuwe versies en blijft als je goed OOP programmeert alles werken. De basis klasses zet je dan best in een aparte map die je include in elk project.

Als je Mint hebt (of te pakken kan krijgen) moet je die code is uitvlooien. Heel het systeem van peppers werkt met het extenden van basis klasses.

Wat je moet doen is met versiebeheer leren werken. CVS is precies bedoelt voor het probleem dat jij schetst. Een modernere variant is Subversion.

Zoek dus op CVS en Subversion en OSX en je vind raad.
Simpel is het allemaal niet, dus trek er een zondagje voor uit om je in te lezen.
Een klant-specifieke versie heet in die systemen meen ik een ‘branche’.

Volgens mij (maar dat weet ik niet zeker) kan je niet zomaar met iedere editor werken onder CVS/Subversiobn dus wellicht houdt het ook in dat je keuze moet maken voor uiteenlopende tools als Eclipse IDE, vi e.d.
Zie ook svnX http://www.lachoseinteractive.net/en/community/subversion/svnx/features/

henk

Misschien bedoel je wel met Smarty ? das van pear.php.net. daar kan je je html gescheiden houden van je php door in html een php functie te koppellen met {functie showpoll} <-- zonder php aan te roepen gewoon in html. dan zet je via smarty dat pear daar een functie achter.