Arkitekturisk idéer bag modulbaseret CMS

Tags:    php

Hey Udviklere,

Jeg har længe gået og tænkt over dette, og ledt efter nogle blogs/posts omkring emnet, men synes jeg har haft svært ved at finde det. Så tænkte jeg, at jeg ville spørge her.

Jeg leder efter nogle posts/eksempler på hvordan man bygger et modul/plugin op. Altså hvad er logikken bagved at kunne installere et plugin til et site?

Jeg kunne godt tænke mig at lave et nyt projekt omkring dette for at udvide min horisont, da jeg aldrig har rørt ved det.

Så alt og intet omkring emnet modtages med kyshånd!

Mange tak.



2 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
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.



Jeg bruger faktisk selv CI som framework ( i en modificeret udgave ) og det ville være super at lave det dertil.

Min tanke var at prøve og lave et basalt CMS som jeg kunne bygge ethvert site opfra. Hvis jeg har min "core" så kan jeg bare smide mine plugins (news, user management tilføjelser etc etc etc) ind i det nye site, og installere det igennem mit admin interface.

Så jeg kan egentlig selv bestemme hvordan opbyggelsen skal være i forhold til om der skal bruges ex PEAR eller ej.

Men mine hovedtanker bag var jo:

1: At udvide min tekniske horisont.
2: At skabe et miljø hvor at hvert projekt jeg laver ikke bliver from scratch. Det klarer et framwork langt hen af vejen, men det er jo aldrig dumt at lede efter mere optimale løsninger.

Men jeg vil prøve at se om jeg ikke kan finde lidt mere CI guf. Elsker det framework :o



t