How does a Content Management System (CMS) work?
When content is king, and up-to-date information is vital to SEO efforts, every website should have a CMS. Understanding how your CMS works is vital to understanding how to manipulate your website's content. In this post, we will be discussing how a CMS allows you to interface with your database so you have a better understanding of what that "Submit" button really does. I will try to keep the technical jargon to a minimum and use analogies when possible. We'll discuss
What is a CMS
A Content Management System (CMS), is a Graphic User Interface (GUI) that makes interacting with a website's database user friendly. There are thousands of CMS options for websites, such as Wordpress, Drupal, Wix and Grid, and all of these CMS systems work differently, allowing the website admin different levels of permission and control. I'm using one right now to write and post this blog. Although the CMS is the entirety of the web application (database tables, admin panel and front-end display), a CMS is typically judged on the functionality of its admin panel. Wordpress is the most popular CMS because of its large plugin library, which exponentially increases its admin panels functionality.
The Information Network
Let's start at the server. Think of it as an internet hotel. Your website hosting account, that thing you pay GoDaddy for, is a room within that hotel. Within that hotel lives your database. Still with me? It's probably named something like, Wordpress-2011, but let's call him Kyle. Kyle loves tables, not the four legged kind, but the spreadsheet type. He loves making tables. He makes tables for your website's menu, pages, blog posts and images. In fact, all he does is make table after table, storing them in neat, numbered rows. (see below)
Each table/list has a name. The blog table is separate from the menu table. The events table is separate from the image table. Each of these tables has columns and rows. Each column has a header. So, if we were to have a table of random actors I found online, it would look like so. I can add more columns to the database for new fields, such as Facial Expression or Height, and I can add as many rows/actors as I wish.
Now, imagine this is a table for blog posts. We would call it "wordpress_blog_posts". Without getting into storage types, let's say we have five columns again. One for "post_id", "post_title", "post_content", "post_date" and "post_author". A websites page template for "Blog List", pulls down key information from this table and displays it in a list format so you can see a list of the blog rows. When you click on a blog link, the page directs you to a "Blog Post" template, where it shows you the information from a single row. This blog post page that you're reading is displaying most of the information from its row data on our website's database blog table. Make sense? Each page of a website, or list is pulled from a database table.
GUI and WYSIWYG
The entire point of a CMS is to allow a user manipulate database information, template files and design styles without having to understand code or how a database works. This is done through the user interface. Everytime you upload an image to Instagram, post to twitter or friend someone on Facebook, you're interacting with their databases through a GUI. A website CMS is similar, yet provides a much greater deal of control to you over almost all content elements of your website. Every new page you create in Wordpress is a form that is being submitted through MySql to your database to create a new database row entry in the "Content Page" table. Every plugin you download that gives you more capabilities on each page is a code adding new columns to certain tables.
One of the most user friendly CMS elements is the WYSIWYG, or "what you see is what you get". This text area allows you to manipulate HTML without having to know how to code. Operating like Microsoft Word, the program allows the average user to implement text layout changes without needing to understand tags or styles. This chunk of HTML is then saved in a "Text" database row cell and dumped into a page when referenced.
Putting the Pieces Together
CMS's must install themselves on your hosting account and come with pre-built modules such as "content pages", "events" and "blog posts". The tables for these are already baked into the install and all you need to do is create the content. When you click the "Compose New Blog" button, you're taken to a page that is simply a website form wrapped in a simple user interface. Once the "Post" button is clicked, the form is submitted to the database and the new row is created. Your website's public-facing pages, always communicating with the server, pull down the latest table rows for their respective areas and display your content in the correct styles and positioning. (see below)
I hope this helps you better understand your CMS and how it works with your database and public facing website. This has been a very simplified explanation.