PHP CMS that plays well with my own code?


I’m giving my site some long-overdue lovin’, and moving from static to dynamic in the process (PHP5.3 + MySQL5.0). I’d like to pick the assembled brains about which CMS to choose.

On one level I wasn’t sure if I even wanted to go CMS at all, as a homebrew site might be leaner (no stuff I wouldn’t need) and more satisfying to do, but realistically I doubt I have the time for that.

That said, I’d likely find myself wanting to do some original stuff on the site, and have this be as pure as possible, BUT while still leveraging the look-and-feel continuity provided by the CMS.

I’ve run a Joomla 1.5 site for a couple of years, and while I had success in modifying themes and plugins (custom modules) for my needs, the prospect of writing my own addons from scratch, or using it in a modular way, seems daunting.

Another site I’m involved with is mainly original code (as far as I know; I don’t get to see the back-end) but uses Wordpress for certain components. (I don’t know whether they chose it because it’s easy to use as a component in this way, or because the back-end UI is user-friendly for the “mortals” who use it though.)

Then of course there are others, widely-used but that I know little about, such as Drupal and Concrete5.

So, if I wanted to allow for largely self-contained PHP applications to reside on my site side-by-side with my CMS, but making use of it for the presentation layer, would you recommend any particular CMS to achieve this? Or would I be better just sticking with a templating system or somesuch?

Any input very welcome.

In my opinion, it doesn’t matter what platform you choose. You should make that decision based on security, your opinion of ease of use, flexibility, etc… The CMS platforms you mention Concrete5, Drupal, Joomla have documented API’s and you should be able to leverage whichever one you choose to work with your code.

I use Drupal almost exclusively so I know it better than any other platform and I know that if I write my code using Drupal’s wrappers I can quite readily integrate pretty much anything within my Drupal site. Using Drupal’s module system (API), I’ve been able to consume web services for data and authentication in several websites so that a regional website can use login authentication and information from a national website’s database. All of the data was in a remote data centre but it looked like it was part of the Drupal site. I’ve also run custom apps side by side in a Drupal site that used a completely separate database but plays as if it’s part of the CMS.

This isn’t exclusive to Drupal but rather than have a CMS play nicely with your code, you’ll need to learn the inners of the CMS and make your code play nicely with it. It’s a curse and a blessing because there is a learning curve to figure out how to get things done but once you figure it out, usually the API provides a library of functions that will make your life easier.

Anyway, that’s my 2-bits on the subject.

Good luck!


Hi Andrew, thanks for the reply.

I guess there really is no shortcut: I need to delve into some alternatives to find out what makes them tick. Since posting I’ve written-off concrete5 (missing some of the features I’d want), and I think I know what I’ll be looking for in comparing other CMS against the “devil I know” of Joomla (which, following a bit more examination, seems as painful as predicted for using the way I intend). The word “wrapper” that you mention in relation to Drupal sounds like it might be the right philosophy: if the API just lets me trivially “wrap” the site’s common chrome around my own content, that’s exactly what I’m after.

I’m still not entirely writing off using a templating framework instead – the investment of time might not be any greater than learning a CMS to the required level, in the end, especially as I have some knowledge and scripts there to build on already – but I do rather like guddling around with mature PHP projects like these, as they often teach me things that, as a self-taught type, haven’t occurred to me.

Well, I guess it depends on what you want to do in the end. I think to be well rounded today, it’s important to be able to develop using straight code as well as a go-to library like Codeignitor, Kohana, yii or something along those lines as well as a go-to CMS or two. That gives you a lot of options when it comes to spec’ing out a job.

If you choose to go down the Drupal path, I’d recommend looking at Pro Drupal Development. It’s pretty technical and requires some concentration but it will give you a very good introduction and tour of how to write your code using Drupal’s abstraction layer so that your code:
a) works with Drupal’s
b) uses less lines of code

Pro Drupal Development 7

  • Amazon lets you preview the book and make a lot of it available. Well worth looking at.

For a quick introduction on how to do things the “Drupal Way”, I’d look at the book Using Drupal. It describes in detail, common tasks that you can follow along with and get an idea of what modules work well with one another and how to make basic administrative type changes to customize a Drupal site. It’s definitely limited in how to make Drupal your own, but it’s a good primer for basic setup and tasks: