Page 1 of 1

Database controlled CMS Plugin Architecture

Posted: Wed Jun 03, 2009 8:25 am
by Paul Arnold
This thread extends the one in General chat regarding plugin architecture. Didn't want to hijack.

I'm writing a new CMS for our company and I want to be able to add new plugin modules as and when.
To start off with I'm going to have blog, news, page content editor plugins but I want to be able to extend the number of plugins depending on which site I'm using the CMS with.
I also want to have this controlled by the database so that ultimately we can centralise our client's CMSes and control them from one location eg, add/remove features.
Has anyone ever done anything similar or got any tips on how to implement this?
I've got a few hazy ideas at the moment myself but could do with some input.

Re: Database controlled CMS Plugin Architecture

Posted: Wed Jun 03, 2009 3:40 pm
by alex.barylski
I've been working on a component based CMS pretty much since I started programming in PHP...learning Joomla was probably one of the best and worst learning experiences of my life in this regard.

Go study Joomla plugin architecture, fundamentally they do it spot on, architecturally, they are better than most, implementation wise, the code is a bloody mess. :P

Re: Database controlled CMS Plugin Architecture

Posted: Wed Jun 03, 2009 4:08 pm
by allspiritseve
PCSpectra wrote:Go study Joomla plugin architecture, fundamentally they do it spot on, architecturally, they are better than most, implementation wise, the code is a bloody mess. :P
Any chance you could elaborate on the 'fundamental' aspects of their plugin architecture that are 'spot on'?

Re: Database controlled CMS Plugin Architecture

Posted: Wed Jun 03, 2009 7:31 pm
by josh
Its really easy to bootstrap into their MVC, use their request object, or very easy to implement your plugin as a simple procedural transaction script or bootstrap some other framework and integrate with theirs. They make a distinction between plugins which are event hooks, modules which are widgets in the page ( that can use plugins & components ) and components basically mean you are writing your own entire module for their application. The great thing is your module has a single point of entry to do it's own bootstrapping, completely freeing you to implement your own architecture if you wanted