I’m building a codeigniter application that will serve custom microsites. Essentially each microsite will be a collection of seven different views all loaded by a single controller’s methods. To ‘Theme’ each microsite there will be different folders containing different versions of these view files (and their associated css, js and image files) and the controller will know which folder of views to load based on information stored in the database for each microsite record.
The problem with this approach is when a single microsite needs to have a custom page that is unique from all the other microsites. Since they’re all controlled by one controller, we run into the limitation that either all the microsites need to support this page.
To futher explain what I’m referring to imagine these urls:
http://www.fakewebsite.com/index.php/microsite/index/david_site
http://www.fakewebsite.com/index.php/microsite/index/frank_site
In both of these links the controller is ‘microsite’ and the method is ‘index’
‘index’ knows what template to return based off it’s first argument which is either ‘david_site’ or ‘frank_site’ in the above example.
I can’t say if this is possible with Codeigniter, but I assume so:
So what’s now your problem? That you have too much code in the controllers? Move code from the controllers into the models. Then the code is more re-useable and you can have small controllers on each microsite with fat models that are shared anyway.
Sounds not really good so far, right? Still there’s one controller per each site. Well, make each microsite’s controller extend from a base controller. So all code’s still in one place but for some controller methods they can extend that base controller on a per-site basis.
So the front-end controller then will provide the right controller class per site as it does for the themes – if I understood your question right.