Streamline and modernize all while keeping your CMS

I’ve struggled with integrating CMS products into projects here as of late. CMS products like WordPress, Joomla and Drupal allow you get rapid get something up and running, but can really paint you into a corner if you are trying to do something that doesn’t fit within it’s boundaries. For my money, I would avoid a CMS all together and just manage my content directly in the HTML pages, but that is outside the realm of expertise of most marketing folks who want to be able to manage their content. So I have worked on a couple of strategies that allow for a compromise.

CMS is dead

We are definitely in the post-CMS era of web design. It’s not that the CMS is going away, it is just going to be more streamlined. I read a quote the other day that basically said that CMS products get you 80% of the way really fast but they make you work really hard to get that last 20%. From my experience, this is very true. The future of CMS is just pure content pulled into templates via service calls. For example, utilize your CMS to mange your content, but pull the data from the CMS via a RESTful API into a pure HTML template. There are several ways to accomplish this, it just depends on your needs.

Ajax framework

The easiest way to get started with your CMS and decouple it from your project, it just to utilize a Javascript framework like AngularJS. Most CMS products have native REST plugins or third-party plugins that make it simple to retrieve data. What I do is create an Angular-based application and just pull each post into the template as the user navigates. This keeps me free to do whatever I want in HTML5, CSS and javascript but still gives users the ability to manage the content. The only drawback here is for SEO since the HTML won’t be in the page if you view source… it is written into the DOM later with a RESTful Ajax call. If you want SEO for this strategy, you have to support Google’s Ajax Crawler Specification and use the _escaped_fragment_= syntax to serve a prerendered version of the page or just serve up a static wordpress template… I believe this to be the ideal compromise of modern technology and flexibility of the CMS with few drawbacks.

Server Rendering

This strategy employs all the above approaches except without the AngularJS mechanism of replacing content dynamically. Each page is rendered on the server with PHP, JSP or ASP… it’s really up to you so long as the rendered HTML is there when you view source. The pages or controllers can get the data from the CMS via the database of through the REST api. If all of your content is in the CMS’s, you’ll have it a bit easy. The drawback to this approach is that is isn’t as clean nor is it easy to maintain. The advantages of keeping a pure HTML5 site and not having to run on an app server to test go out the window. You also can lose valuable performance time this way if you aren’t careful.

Pure CMS

Pure CMS-based approaches are the most common for a myriad of reasons. I want to lay out a few of the reasons that you might choose this approach. In this approach, the template for the site is embedded into the CMS, the content is all in the CMS and you are in a lot of ways a victim of the stylesheet and elements that the template uses. This is the box I spoke of… You are also fairly tied to the CMS itself. Now that we know the pitfalls… lets look at why you would choose this route.

  • Your expertise in house isn’t capable of taking on any other option.
  • You have an extremely static site that has little to no dynamic pages
  • You don’t have a need for fancy dynamic components or a super cool site
  • SEO is your only goal
  • You want to keep it as simple as possible

Conclusion

At the end of the day, CMS products aren’t going anywhere and they are constantly dying out and new ones are taking their places. This is the rapidly changing world of technology we live in. I just prefer to keep a loose coupling between my code and my CMS as much as possible so I can respond very quickly to these changes.