Introduction to CMS

From FreekiWiki
Revision as of 05:00, 23 January 2013 by Bsandberg (talk | contribs) (clarification!)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

All webpages are created equal, and are made with some combination of HTML, CSS and JavaScript. When webpages were first created, there was an actual, literal .htm(l) file for each webpage. If one had a site with 10 pages, there were 10 files; a website with 10,000 pages would (in theory) have had 10,000 files! As websites evolved, and these files needed to be maintained, it became clear that some method to manage the information on those pages in an efficient manner would be necessary. This is the base reason for a CMS; to manage a website -- whether it's 10 or 10,000 pages.

What is a CMS?

  • CMS stands for Content Management System(s).
  • A CMS is a computer program (like Word) for managing a website.
  • But it runs on [top of] server software - it's not installed locally (like Word).
  • One uses a web browser to interact with a CMS, rather than directly (like Word).
  • CMS typically store content in a database. This can be analogous to the brain-and-body; the database is the brain, and the files are the body. Think Frankensite. :)
  • CMS often have a templating (or theme, skin, etc) system, for abstracting content and design. By simply changing a template, it can be like a new outfit or a coat of paint; an all-new-looking website, with the same, exact content.
  • CMS are complex software programs, built using multiple programming languages, such as;
    • PHP or .NET
    • SQL
    • XML
    • HTML
    • CSS
    • JavaScript & JSON
  • Generates each page dynamically (on-the-fly), and when CMS finish operating, what is output, is typically HTML, CSS and JS.

Why use a CMS?

  • Scalability. It's excellent for managing small or large amounts of content. Features like categorization, and publish scheduling are helpful.
  • All are welcome. No coding skills required! With WYSIWYG editors, one can easily write content in a Word-like interface, which will write HTML code for you.
  • Templates. Simply change a template and drastically alter the look of a website. Manage the look of all pages in a consistent, centralized manner.
  • SEO. Search engine optimization and placement is so important. CMS can maintain sitemaps, 'pretty' URLs, and redirections to improve ranking.
  • Multiple users. CMS allow multiple folks to manage a website at once, often with controls to allow certain groups (i.e., Teachers) to some content while blocking others (i.e., Students).
  • Extensibility. Most CMS are written using "open" languages such as PHP. These CMS have APIs for others to leverage the significant tools and features available in the CMS.

Why not use a CMS?

  • Static. A site that changes so rarely, that it's not a problem for someone familiar with HTML to update it when needed.
  • Size. If a website will only be a single page (or two) the overhead of a CMS may not be justified.
  • Time. It may simply be faster to 'hand-code' webpage(s), rather than setup and use a CMS.

CMS Flavors

There are three CMS which lead the market, and are referred to as "The Big Three". They are; WordPress, Joomla! and Drupal. Each has strengths and weaknesses. Each is used by major companies around the globe, and an established user base in the many millions. Additionally, there are local (Portland) User Groups for each product.


WordPress is unique among the Big Three, because it has a for-profit company driving the development. They provide a free blogging service, where anyone can get a WordPress site ( This could be compared to an apartment; you're able to do plenty with the site, but there are certain limitations because the site is hosted by them.

Automattic, the company behind WordPress also makes the software freely available under the GPLv2. This could be compared to owning your own home; you'll need a web hosting provider, ample storage space, a database to store your content, and a database user to allow the application (files) to communicate with the database (brain). All modern web hosting companies provide these features in abundance, but quality counts in this arena, and you'll get what you pay for.


Joomla! is widely regarded as an enterprise-grade product, but usable by a mom-and-pop shop. It's underlying framework is designed to enable powerful new web applications.


Drupal is typically viewed with either extreme positivity or negativity.

Free Geek Demo Site

Free Geek provides demonstration installations of each of these CMS at Please observe that the databases are reset every so often, for security reasons. If you are logged into a site when this reset occurs, you will be logged out, and your changes erased.


There are literally hundreds of other CMS products. Wikipedia has a great resource here [1], but some of the notable products include;

  • Concrete5 (based in PDX!)
  • Typo3
  • DotNetNuke (.NET)
  • Mambo (Joomla was created as a fork of Mambo)
  • Magento

What is NOT a CMS?

There are lots of webpage-creation products out there which allow one to create a website very easily. Many of these products (or services) are limited; they may have a certain attractive feature, but if there is a desire to change how that feature operates, or to add a new feature, very often it is not possible. Additionally, some services are designed to aggregate content from other sources into a single view. Some examples of products or services which are not CMS;

  • Facebook
  • Twitter
  • Tumblr
  • Blogger, Blogspot
  • Wix
  • Weebly

What do I need to run a CMS?

A functioning CMS requires web server software, database server software, and a language interpreter to translate the code to instructions. For public websites, this software should operate on large, powerful computers capable of handling lots of information at once. By contrast, for private work, testing or development, these server software can easily be operated from a laptop.

Here's what's needed;

  • Web Server (either Apache or IIS)
  • Database Server (either MySQL or MS-SQL)
  • Language Interpreter (either PHP or .NET)
  • Web Browser (Chrome, Firefox, Internet Explorer, etc.)
  • Domain Name ( -- OPTIONAL)

Most of these will not be something the average person works with or manages. Hosting companies will manage the server aspects, and the browser is up to each person. A domain name is not strictly required for a website, but obviously a very useful thing to help drive traffic and for easy branding.