A Look at the Concrete5 CMS

28thJune 2011 | Tags:

There are so many Content Management Systems (CMS's) out there that due to the sheer volume of choice it's easy to plump for the best known options, such as Drupal, Joomla! and Wordpress. However there are times when these "flagship" CMS's might not be the best option. Drupal, for example, can be overly complex and bloated for fairly simple websites (personally I've often thought of it more as a framework anyway), or Wordpress might be too specific for a site that's not strictly a blog. I've long wanted a good, easy-to-use, stripped-down but extensible - alternative, and one such option I've looked at recently is Concrete5. Concrete5 has gone from being a commercial product to MIT-licensed Open Source and makes some pretty bold claims about being easier-to-use and better coded than Drupal or Joomla. But does it live up to these lofty ambitions? And how does it compare to Drupal, Joomla and so on?

The User Interface

The first thing that leaps out about Concrete5 is the inline editing (or at least, a modal window-based approach to inline editing), a feature which the major CMS's have been slow or resistant to adopt but which I've often thought would help content editors no end. Too often there's a disconnect between areas of a page and the administrative interface to those areas (Drupal's block system being one such example), so being able to edit things directly - or near as dammit - provides a real advantage from a usability point-of-view. There are some screenshots of this functionality below, and the Concrete5 team have put together a video showing it in action.

Inline editing in Concrete5
Using Concrete5's inline editing feature, you simply need to click an area of the page whilst in edit mode to directly edit the content or characteristics of that area.
Inline editing in Concrete5
In this screenshot, clicking an area and selecting *edit* has brought up a rich text editor as a modal window, allowing the content to be edited directly.

Theming Concrete5

Theming in Concrete5 is nice and simple. The Concrete5 website even includes a screencast showing, it claims, how a design can be converted to theme in just eight minutes. (The reality is somewhat different, naturally, but there's no reason why a simple HTML page can't converted in around that.) There's also a miniumum amount of code required in the theme files to make it work, which is something I personally like when a project is divided up between front and back-end coders (an area, I believe, where Wordpress excels). As I mentioned earlier I've always found Drupal's block architecture to be among its weakest features from a usability point-of-view, so it's very refreshing to be able to add a new region with a couple of lines of code, browse to a page and click the region to begin populating it with blocks (every element of content in Concrete5 is encapsulated in a block; in contrast to Drupal, where blocks typically contain tertiary content). Re-ordering and moving blocks between regions takes a couple of clicks before dragging around the page - simple and intuitive.

Design options in Concrete5
Concrete5 allowis a number of different layouts - configurable in the theme - across a site. Themes are readily available on the Marketplace, and can be installed (along with other add-ons) from the admin area of the website itself.

It's relatively simple to override the output of any block in your theme, in such as way that you aren't touching the Concrete5 core - it's just not particularly obvious initially (In fact, I'll probably write a tutorial on this later).

Digging Into the Concrete5 Codebase

Digging into the code, the first observation I made - and the most striking and welcome - was the extent to which Concrete5 adheres to the O-O paradigm and the MVC architecture. The block system - which, don't forget, is at the core of the CMS - utilises MVC, with a controller responsible for add and edit operations on content of a given type, rendered using a separate, themeable template file. Each block (which can effectively be the output of a whole page) can be neatly encapsulated in a package. What's less clear, however, is how to override aspects of a block such as its markup, without recreating a whole package or editing the view within a contributed package (unlike Drupal for example, where a module's output can be overriden by creating new template files in the site's theme). Commenting leads a lot to be desired, though that's hardly exclusive to Concrete5, but most files appear to be relatively short, with functionality divided up neatly and encapsulated within classes in a logical and consistent manner. Coding styles aren't always consistent (capitalisation of SQL statements, for example), but not in a way which is overly significant or which makes the code difficult to follow.

The File Structure

On the subject of Concrete5's directory structure, this is neat and tidy with a nice clean separation between core and custom extensions, themes and so on. The core is incorporated under a single subdirectory which might seem simple and common-sense, but is a more logical arrangement - and easier when updating - than Drupal's, for example. Concrete5's neat plugin system means that any add-on - be it an add-on or a theme - can be installed as a package by placing it in that folder, and the system is smart enough to work out what's being installed.

Third Party Libraries - Zend Framework, JQuery, ADOdb

Concrete5 uses a number of trusted (by me, at least!) third-party modules and libraries, including Zend Framework (one that I favour in particular), ADOdb and of course JQuery. Experience with Zend has helped my learning curve already, and the use of JQuery over something like Dojo is - in my view, at least - a bonus. Third-party libraries are neatly stored away in clearly marked directories and it' quickly clear how new modules would be incorporated when building new extensions.

Extending Concrete5

One criticism I noticed when canvassing opinions on Concrete5 - which mirrors my initial impression, I have to admit - is what the company's business model appears to be insomuch as the core product is free and open source, but a significant proportion of the add-ons available through their Marketplace come at a price. Whilst the company clearly make no attempt to hide this fact, it's something that might not be immediately obvious when assessing Concrete5 as a CMS. An advantage of Drupal here is that commercial modules are a rarity, and the community of developers much larger. On the flip-side, the "marketplace" becomes exactly that for developers to benefit financially from their own work. It also implies - though I cannot yet confirm or refute this assumption - that add-ons come with a certain guarantee of quality, as they presumably have to accepted into the Marketplace by the company. (Note however that as an add-on is simply a directory structure, there is no requirement that an add-on be delivered through that marketplace - the App Store this ain't.)

Some Pros and Cons of Concrete5

I've both covered and found a number of pros and cons while digging around with Concrete5, which I'll summarise below.


  • Slick and easy-to-use interface
  • Easy to install
  • Fully O-O
  • Judicious use of third-party libraries
  • Easy to theme
  • Excellent documentation
  • Performs well
  • Useful selection of helpers
  • Not too bloated


  • Much smaller community than the "big two" (Drupal and Joomla)
  • Many add-ons come at an additional cost
  • Certain things you might expect "out of the box" have to be sourced or developed manually (e.g. a contact form)
  • The commenting in the source isn't great
  • The permissions model lacks the granularity of, say, Drupal&rsquos - and the "advanced permissions" must be manually enabled
  • The documentation seems weighted towards CMS users; some theming and development areas not very well covered

Concrete5 vs Drupal vs Joomla, and Conclusions

If this is the question you're looking for an answer to, I'm going to disappoint you because I don't think it's fair to compare them (though of course it's inevitable that people will try to). As I've already stated, Drupal is - in my view at least - a development platform as much, if not more, as a CMS. Drupal might, for example, be used to create an intranet (Open Atrium is one such endeavour) - Concrete5 is unlikely to be suited to such a task. But as a CMS, Concrete5 is an excellent option. One of the things I liked about Concrete5 is that's nice to be able to think about a site in terms of what the user sees and work backwards, rather than get bogged down with content types and schemas and worry about presentation later. The click-to-edit block mechanism, the inline editing and the emphasis on filling regions of a page interactively feels more intuitive than, say, building content types and then templating in Drupal. This approach might render Conrete5 less suitable for a complex web application, but makes it a much more satisfying choice for a simple website - and it's one I'll be taking for some websites in the future.


    Thanks so much for taking the time to review concrete5! It’s great to see more people taking a serious look at it.

    Just to provide some clarification on some of the questions/concerns you raise:
    1) Yes the marketplace has a vetting process run by our community. The add-on has to install, it can’t collide with others, it has to do what it says, and it has to be kept working -regardless of if its free or not. If it costs something, the developer MUST provide support in a timely fashion or we refund transactions and pull the add-on. The idea here is a lot of work goes into making these systems fully featured and if we can spread some of that work out amungst the community, we should spread some of the compensation too.

    Yes you can always install a package by hand, so we’re not like Apple in the sense that your device is locked up. We are however providing one-click installs if you connect your site to the community, and we expect a non-techie to be able to shop, install, and use add-ons and themes from our marketplace just fine.

    2) You should check out Custom Templates for block. That’s basically a customizeable view layer and it sounds like might be what you’re looking for.

    3) You should play more with advanced permissions. While we are going to update the roles they allow in the next major version, they are quite granular when it comes down to locking specific pages, page types, areas of pages, or even blocks on pages. The reason you have to flip a value in a config file to turn them on is they are rather powerful and somewhat confusing to a casual user.

    In general you’ll find we take an "onion skin" approach to features in concrete5. We try to make things look simple at a glance, but there’s a fair amount of power under the hood if you dig.

    4) A contact form can be easily be built with the Form block in the core. It’s not awesome, but its more than adequate and requires no development skills to use.

    5) You can actually build rather robust applications with concrete5 if you care to. There’s a "single page" model you should check out. There’s a powerful members profile framework you can extend. We’ve built sites with millions of pages in them, and we’ve seen companies build extranets that replace sharepoint and power the whole company. Generally this type of work flys under the radar, but here’s a quickie example:

    The fact that a PM can start with something that actually works out of the box this weekend, and get more buyin as they go, really powers concrete5 to be an effective solution for these more enterprisey problems.

    Beyond that, you got it right. We’re not as good about commenting the core as we should be, but now that we’ve left subversion and are using GIT that’s getting slowly better.

    Thanks again for the detailed review.

    -Franz Maruna
    CEO, Concrete CMS inc.

    1st July 2011


    Thanks for the detailed response. The more I look at the product the more I see the "onion skin" approach in action, so I’m constantly revising my view on certain aspects. The example of the intranet you supplied is particularly interesting - I’m certainly going to build a few simple websites with it, before - all being well - looking at scaling up. I’ll be following the product with interest!

    5th July 2011
    Lukas White

    Thanks for your thoughtful review, which "digs beneath the surface" more than usual and, I think, reflects pretty accurately how a typical web developer would respond to the package.

    I’ve adopted it as our company standard CMS for the typical business website – where very specialized requirements don’t necessitate specific add-ons. End users find it a joy to interact with. And, the "onion" approach to the environment provides a gradually exposed richness and flexibility – which is available on an "as-needed" basis. But, working at the top level – which maps pretty closely actual web development – is fast and fluid.

    You note the ease of customizing the environment. For a developer, this is crucial, and far superior to a number of other CMSes, where these issues seem an afterthought.

    Thanks again for your review.

    30th September 2011
    Jay van Santen
    Jay van Santen

    I can only back up what Franz says. For the past few years I had been using Drupal and Wordpress and occasionally Joomla. I favoured Wordpress. However in April this year I was coerced into building a site in Conrete5 and absolutely love it. It is so easy to do compared to the other three mentioned above and you get a really professional product to give to clients. It does have some drawbacks, but these are only minor and I have since built about 15 sites in Concrete5 and no complaints to date. The fact you can take an home page (HTML/CSS) and flip it into C5 in ten miutes and voila you have a CMS, then a further ten mintes showing a client how to edit it, really says it all.

    10th November 2011
    Edwin Cooke
    Edwin Cooke

    Currently a Drupal developer and exploring other options. I love MVC and I miss it. I’m interested to see what module building is like in C5 compared to Drupal or WP plugins. Thanks for the in-depth review.

    24th February 2012
    Joel Milne
    Joel Milne

    You can’t be serious, Frank. A whole year has past since this review and the contact form has not been fixed yet. Seriously? You call that form THING a contact form? It is so hard to customize.

    Concrete 5 is a disgrace, though not as disgraceful as $#@# wordpress. For now I will be doing things BY HAND.

    21st July 2012

    Drupal is not bloated. It’s a framework to work with. There’s thousands of modules you can add on to make it bloated if you wish, but core drupal is just that. The very basics of a cms needed. Inline editing is available in drupal 7 through either http://drupal.org/project/aloha or http://drupal.org/project/editablefields at present. Drupal 8 plans to integrate this set of functionality into core I believe.

    10th August 2012

    My first introduction to the CMS world was Joomla back in 2004. I found it cumbersome and hardly intuitive. Recently looking at it again, sure it had one helluva lot of components and add-ons like word press. Some cool features but for the most part bloated. Discovered Concrete5 a couple years ago. For a web designer who’s non-programmer it’s been a dream. Clients can actually edit their own site without anxiety of going into some cluttered admin area. The block system is great and I don’t mind paying a few bucks here and there to get the necessary tools to make a website work. We’re all here to make money. Cheers

    19th August 2012

    I’ve seen a few people talking about the Contact Form and thought I would add my 2 cents. The block for the Contact Form does indeed suck. (that is if you are looking to build anything but a simple contact form). I had a project I inherited to create a Registration Form. No way could I use C5's form as a starting point. Nothing decent in the MarketPlace either.

    What I did was create my own html form, with exact placement (I used tables) and then saved it as RegistrationForm.php. I then tossed it into the ExternalForm folder in my project.

    Then you can add a external form block and point to your new form you just created. Ajax, JavaScript and PHP can be used in the controller file for validation, writing to a database or Credit Card authorizations.

    It took me a while but the form is nicely themed, input fields are able to flow left to right as you continue your way to the bottom for Submit. It turned out very nice.

    Happy Coding :)

    6th September 2012

    I am the manager of the IT department of a multinational company. The company’s website is a good css based design and effective information architecture. There are approximately 10,000 HTML pages. In addition to the main website there are small website developed in house in PHP and MySQL by the IT support staff and several other websites and intranets developed in ASP by the marketing and recruitment departments. These all have different design to the main website. Pls I need suggestions as to which web content management sytem would fit the company.

    5th November 2012

    which web content management system would fit the company and why?

    5th November 2012

    Informative Blog

    Thanks for Sharing !!

    17th January 2013
    AnonymousWeb Development Company Faridabad
    AnonymousWeb Development Company Faridabad