Using a Content Management System is the preferred way to build websites because of the power, flexibility, and nimbleness that one offers. Let’s take a look at the benefits first, then we can peer into what a CMS actually is.
The first and most obvious benefit of a CMS is that is allows non-technical people to update and add to the content on a website without having to understand all of the technical underpinnings. It used to be that websites required someone who knew HTML in order to change or add anything. This generally translated into a workflow bottleneck where the people who were in charge of the marketing would have to write up their requests and then send them over to the folks who would implement them. There were usually delays, and this ended up creating the effect of updates not being made very often. Instead of the site feeling like a glove on the hand of marketing, it felt like a separate entity that was only touched via remote correspondence. With a good CMS that has been well-implemented, the marketing folks can go in and add to/edit the site’s content as needed. The result is that marketing starts thinking more about what kinds of things they’d like to do, and is able to nimbly execute their wishes themselves.
This empowerment of the non-technical folks is achieved through the separation of content, presentation, and functionality. This means that non-geeks don’t have to wade through markup and styling that affect how the information is displayed. They can concentrate on what the information communicates instead.
The second benefit is that a good CMS provides functionality that would not be as feasible or affordable without a CMS. Items like blogs, calendars, and catalogs can technically be built using just HTMl & CSS, but these do not provide the convenience or power that an automated system provides. Consider this: When someone puts up a blog post, there are 4 main ways in which that information is generally presented. The first is the “full text” page where the full content of the blog post is readable. The second is the “list page” where the blurbs for all of the posts are shown. In the third location, a blurb is placed on the homepage of the site (and maybe a sidebar or footer) for the most recent few posts. Finally, the blurbs and links are put into an XML-based RSS feed so people can subscribe to the blog. Going in and manually setting all of that up each time you wanted to publish a new blog post would be a nightmare, and we haven’t even talked about tagging posts or allowing comments.
A CMS automates all of this by using a software layer (more on that below) to take a single blog post and slice & dice it so all of the right bits automatically show up in the right places.
Finally, a good CMS adds benefit by having an ecosystem of pre-existing functionality, and a continued process of development. If you wanted all of the usual cleverness people take for granted nowadays, building it from scratch would be slow and expensive. Using a CMS means you pick up existing code, and shorten the development process. Additionally, if you were to build a custom solution, it would stagnate as soon as your site was finished. By using a CMS is that is being actively developed, security fixes and advancements become available.
The classic way of building a website is to craft HTML pages containing your content. If you want a site with a dozen pages, you create a dozen HTML documents. Making changes to the site means using an FTP program (software that moves files between your computer and your web server) to pull files from the server, edit them on your computer (in HTML) and then send them back up to the server. This is a cumbersome process at best, and it forces people making edits to do it right in the HTML where they can easily break something (am I bringing back bad memories?).
A CMS completely re-envisions this by breaking things out into separate layers:
The Presentation Layer is where the HTML and CSS live that govern the overall look and feel of your site. A web designer creates this, and you never need to touch it.
The Content Layer stores your content in a database – that means all of your words, and the links to your pictures, videos, etc.
The Functional Layer, is in the middle where the software intelligently puts together your pages and provides the clever functionality that underpins a blog, calendar, catalog, or other automated system. It also provides the tools that let your non-technical people easily go into a passworded area and edit your information in a geek-free manner.
Imagine one of those picture frames that has multiple slots in it for different pictures. This is like your Presentation Layer. It has been crafted by a designer to put everything in the right place. There is a slot for main navigation, one for page content, others for sidebar elements, and so on. When a visitor comes to a page, the Functional Layer looks at what page it is, pulls content from the Content Layer, and slots it into all of the correct spots in the Presentation Layer. This then gets flattened out and looks to the visitor’s browser just like it was always a plain HTML document.