views:

97

answers:

3

My company is looking at various PHP frameworks to build a customer's site. This is a shop that has some legacy in-house frameworks and we're trying to move away from that. In my spare time, I've coded in CodeIgniter and dabbled a bit in Kohana. I have yet to use a CMS like Joomla or Drupal, but I recognize that they're built using an MVC and PAC design pattern respectively. In starting my excavation, I came to the preliminary conclusion that it might make more sense to use something like CodeIgniter to build the user-facing portion of the site and something like Joomla to build the admin-facing portion of the site, such that Joomla is never loaded unless you specifically go to admin.xxxxx.com.

So following this logic (and please do let me know if it's very flawed), I'm here to ask if anyone's ever done anything like this before, and if so, what might be the best method of taking advantage of some of the more automated features of Joomla (sorry if I don't go into too much detail here...I haven't studied Joomla enough to know everything about it....please correct any gross cognitive errors!!) from within a more lightweight framework like CodeIgniter.

Or is this going down the wrong line of thinking? My first instinct is to just link the two by data in the database and never have them communicate directly, but I just wanted to be sure this was correct before I take it to my superiors.

Vielen dank, guys

+2  A: 

Quite possibly flawed, all of these CMS's run on assuming that they are used for both admin and user site, the major problem this causes is that code and the way things work are very intertwined meaning that a simple 'hook in to the database' often isn't enough and you'll have to use most of the CMS code just to pull / put valid data - the other caveat with that is that if the admin is upgraded, it can easily change the database schema which would break your front end.

I'd highly recommend going with one or the other, either your own design using frameworks for admin and user site(s) - or just stick to single CMS and bolt on whatever functionality you need with plugins.

Best!

nathan
Hey nathan. Thanks a lot for your answer! Could I trouble you for your opinion on which might be better? The site will be very extensive and we'd effectively need to customize a lot of one of these CMSes. On the other hand, we'd have to "reinvent the wheel" a bunch without a CMS. My immediate opinion is to have more control with a framework like CI instead of backing out of a pre-built system like Joomla.
treeface
personally, I'd go for CI or Kohana for presentation stuff (regardless of whether it's user or admin site) and create a separate application tier which controls everything (exposes methods to get data, to store it, etc) - typically referred to as N-Tier or 3-Tier architecture :)
nathan
Thanks again. I agree and hopefully so will my superiors!
treeface
Keep an eye on Version 2 of Expression engine, it is coded in codeigniter and could help with providing alot of CMS functionality.
Kieran Andrews
+1  A: 

I Agree with Nathan.

When you're using pre-built frameworks you lack the control factor over the core elements, this is not good especially developing for a corporate system, you need to have full control over every part of the system for future developments / integration.

My advice is to start with a small but abstract system it would be more beneficial, my advice is to use a framework like codeignighter that consists of an MVC Pattern but also plays the simplicity role with ease.

Take a look at the OpenSource application called "OpenCart" which is a small MVC Store, the reason I say look at this is because it's an extremely basic MVC Pattern and can be abstracted for your applications.

Hope this information helps.

Regards.

RobertPitt
Thanks for your input, Robert! I will definitely keep this in mind when I make my recommendation.
treeface
A: 

When your using pre-built frameworks you lack the control factor over the core elements, this is not good especially developing for a corporate system, you need to have full control over every part of the system for future developments / integration.

Well I don't know if i would necessarily agree with you about this?

JayTwan