det er en skidegod øvelse.
hvor avanceret din arkitektur skal være afhænger af niveauet af fleksibilitet og rækkevidden af udvidelse fra en ikke teknisk-kyndig person.
et modul kan være en hel php-side der viser dig en brugers profil og en avatar fra gravatar.com. et modul kan også være en række widgets du trækker ind på en side -- hvoraf en af dem kan være nævnte profil. det klart nemmeste er at skrive det første. det klart mest brugbare er det sidste.
Et eksempel på sidstnævnte løsning er Drupal og Typo3. Et eksempel på den simplere løsning er PyroCMS(der dog har en meget simpel widget-løsning til visse småting).
Med hensyn til installation af plugins: hvis du vil have den forkromede, billion dollar løsning, så bliver det avanceret. Du skal have en struktur for definition af databasetabeller, og du skal have nogle procedurer der kan sammenligne med hvad du har i databasen allerede, med hvad dit plugin har i sin nuværende version -- dette er nødvendigt når et plugin skal opdateres til en ny version. Så er der problemet der kan opstå når to plugins udvider den samme tabel med flere felter -- hvilken har præcedens?
Hvis du vælger at lave den vilde løsning med flere isolerede plugins på en arbitrær side, snarere end 1 side = 1 modul, så skal du også have en fornuftig måde for sitebuileren til at interface med layoutet og placere pluginsne de rigtige steder. Den simple løsning er at lave et stærkt templating system hvor den slags kan bestyres. Den forkromede er at køre Typo3/templavoila stilen og lave et point and click interface med et renderet view af layoutet.
På det helt lave kodeniveau er der også en problematik der skal overstås i forbindelse med dependencies -- hvis et plugin afhænger af et PEAR-modul til PHP, hvad skal der så ske hvis PEAR-modulet ikke findes? hvad hvis to plugins afhænger af forskellige, inkompatible versioner af samme PEAR-modul? Hvad hvis et plugin er afhængigt af et andet plugin til dit CMS -- hvordan ved du hvad du skal loade først?
Dette er toppen af isbjerget, hentet fra egne erfaringer. Som nævnt, det er en skidegod øvelse.
Hvis du er helt fortvivlet ville jeg starte med at lære at bygge moduler til Drupal eller lignende -- eller kode nogle 1page=1module systemer i CodeIgniter (artikel:
http://www.udvikleren.dk/PHP/Article.aspx/339/ ) for at komme ind under huden på hvordan eksisterende systemer griber det an.