From the desk of important beginner concepts:
You have a website with 100 pages on it. All 100 pages use the same style.css file. You’d like to change the background color of every single page. You make one adjustment in the CSS file, and that background color adjustment will be reflected across all 100 pages. You don’t need to edit each of those pages individually. That’s the core benefit behind CSS: abstracting the design away from the markup.
Now you want to make another change to those 100 pages. You’d like to include the publication date underneath the title of each of the pages. That is something you’ll need to edit the HTML to do. If those 100 pages are based on a template, as they would be when using a CMS (Content Management System), you can make one adjustment to the template file and the date adjustment will be reflected across all 100 pages. That’s the core benefit behind a CMS: abstracting the content away from the markup.
The point is that once a website is any more than one page, there are going to be shared resources and it’s time to use a CMS. Just as the zen garden taught us that using CSS is vital to allow design freedom and make redesigns easier, the ultimate freedom comes from also using a CMS where we also aren’t locked to any specific HTML. HTML isn’t for content these days, it’s for describing content. Databases are for content.
I have made this scientific chart to drive home the awesomeness of this all.
Very interesting… Thank you!
Think of HTML as the support of a Colosseum with the people being the content. CSS is just the paint.
What!? CSS is the paint of the Colosseum?! Please save those comments for yourself.
CMS = The House With Complete Furnish
CSS = Tha paint + The wallpaper + The decorations
Well said Chris
The good’ old Hummer.
I have had this concept in my head for the last month or so, but could not put it into words. You did so, beautifully ;)
Thanks for putting this concept into words. As a web developer, these basic ideas are sometimes hard to get across to people :)
very nice and mostly scientific chart :D
So…
model = HTML + (database content)
view = CSS
controller = javascript
I suppose you have multiple levels of abstraction. I don’t suppose you could break this down any further?
“The point is that once a website is any more than one page, there are going to be shared resources and it’s time to use a CMS.”
Chris, I read your blog all the time and so I’m a little surprised to hear you make such a seemingly inflexible statement. That kind of thinking is too rigid for me in a profession where there are so many different ways to skin a cat, none of which are black and white or right or wrong.
One of the beautiful things that I’ve learned over the years about this business is that there are many shades of gray and that backing oneself into the kind of corner your talking about is, at least in my opinion, “unwise”.
In my mind, whether or not a project requires a CMS is dictated by it’s size, scope and complexity as well as the needs (and wants) of the client. It’s just not that cut and dry to me to say that virtually every site needs a full blown CMS. The truth is that while some do, there are others that just need a little “cushy cms” (or the like) and their are even more that don’t need a CMS at all. There’s no way that I’ll ever be convinced that a static, three (or even ten) page brochure site needs a full blown CMS. To what end? Simplicity need not give way to complexity in situations where circumstances don’t warrant.
In fact, what I see going on now is a proliferation of CMS usage on sites where a CMS makes absolutely no sense whatsoever given the size, scope, and objective of the site.
So why are the used? The answer is very simple and it has nothing to do with abstracting content away from markup. The reason is because any hack with just a little knowledge can accomplish a “templated” WordPress, Joomla, Drupal, install without any real knowledge of the “craft” of web design and development.
Novices and IT guys especially love CMS’s because even they can hack together something (Dr. Frankensite, is that you?) because it “skips” over the part of our craft that makes it a craft (and thus us) “special”. They go from nothing to something without “the knowledge” of the monster (in most cases) they have created.
Anyway, I’m not saying that CMS’s are not useful tools, (I use them all the time) it’s just that they should be used only after an analysis of a project by a professional deems it the best approach. Not as a default way of doing things.
I agree, I don’t think that a website that has more then one page necessarily has to have a CMS in place.
That being said, I do agree with Chris’s post, it puts into words a great concept.
I agree with the above, but would add the following: To me, a Content Management System as we’ve come to know it requires a form of storage for content-related data. In most cases (and for good reason) this is a database. In theory, it could be some sort of XML or other flat files.
Recycling code doesn’t require this. But it DOES mean that you should look into server-side includes, with some sort of scripting language (PHP most commonly) or with good ol’ CGI SSIs.
For a site that’s a ‘brochure’ and primarily static site, I don’t think you need a CMS. But it makes sense to use a form of SSI. That way you still only have to update a header, a footer, or a some other shared content in one place.
Greg
I definitely have to agree with this sentiment. I have worked very hard practicing this craft and I am proud of the fact that I hand-code my sites. I have had people come up and say ‘oh I can build a pure css website’, when in reality, what they can do is change the text color in Joomla. And unfortunately it caught me in a pinch for a project.
And you absolutely don’t need a CMS to have a template like structure. Just a little php knowledge and you have an include file.
Like the others said, I too think they have a place. And from the CMS’s that I have been forced to work with, WordPress is by far the most flexible for those of us who like complete control over the file structure. When at all possible go for a custom programmed CMS. Much cleaner!
Besides, the clients shouldn’t really have much more control that changing out some text. Thats what they hired you for in the first place. They, more often than not, just muck it up with clipart and neon colors.
Keep the craft alive.
Couldn’t have said it better myself. Well put.
And by the way, you have excellent English.
Even from the standpoint of efficiency, I can both agree and disagree with the OP.
I agree that not all sites necessarily require a CMS at the outset or “on the surface”, and that client needs should be measured carefully. What is seemingly senseless use of a CMS and redundant functionality to you may make a great deal of sense to others of which you aren’t privy.
As a freelancer who’s had to deal with scope creep, impromptu project overhauls, and middle of the night “client emergencies”, I can testify that sometimes a CMS can save lives. Okay, maybe not save lives, but make mine a little easier.
The days of a CMS itself increasing page load times exorbitantly are all but gone. So, although a “brochure-style” website of four to five pages doesn’t need a CMS, I’ve been known to use them anyway for somewhat self-serving reasons.
I’ve also been in situations (emphasis on the “s” that pluralizes the word “situation”) where the client who paid for a brochure-style site rang me only a handful of months later to ask for CMS capability.
Now, I just apply each project to a CMS. Not because I’m a novice hack, but because it nearly always ends up making my life and/or my client’s lives easier.
Here’s one rule that is always true: rules can always be broken.
Using a CMS of course is not a set-in-stone rule, your own circumstances apply. I do think that it’s nearly always a good idea and just wanted to draw an analogy between it’s use and the use of CSS.
This is actually interesting because it all depends on how you define the term “CMS”. Yes, traditionally, the term “CMS” refers to full-blown third-party installs like WordPress and Drupal. But that’s not really what the word CMS means.
I think Chris is spot on in his statement because *in theory* he’s correct: HTML is not for storing content; content should be tied in to the CMS and/or database.
Imagine the simplest PHP-driven website that has includes for header and footer, and content that changes based on a querystring value. Can’t such a system be called a CMS? Of course it can — because it is a “system” that “manages content”. It’s just not a very complex system and doesn’t have a brand name attached to it.
So, I think Chris is right: Every website should have some form of content management, in order to abstract the content from the markup as much as possible.
I think that’s an unnecessary mis-use of the term. A simple PHP-driven site with header/footer includes and content changing based on the querystring is not content *management*. The management implied in the term CMS is creation, editing and deletion of content, not display.
Your example is a dynamically generated site, but it certainly doesn’t require content *management* in order to work. Certainly it is valuable to have that kind of abstraction even on simple sites. But that is not a CMS, and we’re only making it more complicated for new users by the incorrect use of such terms.
Tom, you’re right. I guess I was referring to the management of content from a programming perspective, not just the non-programmer who will be editing the content.
I guess my point was that a simple dynamic site like I described is one way to abstract content from the page so you’re not just serving up unmaintainable static pages.
Nice explanation Chris. I still can’t resist saying that a CMS could also just be a few server-side includes for common things like a header/footer. For more complex websites, databases are definitely needed for content but HTML can still easily be used for content. Think of small sites and about pages, contact, etc.
My breakdown of it:
CSS – Styling.
HTML – Markup for a way to display and understand content/data.
Server Side Stuff – A way to manage content/data and allow complex features.
JavaScript – A nicer way to interact with that content/data.
Well said, Chris. “Abstracting the design away from the markup” is crucial with e-commerce solutions indeed. From our extensive experience with such projects, when new features are released as a software upgrade, seamless & rapid integration with operating project is very beneficial because it saves online retailers the bill.
Well said Chris and to the point, I agree anymore than 1 or 2 pages you should consider a cms, it’s inevitable that a client is going to say ‘can we add another page?’ bang going simplicity with a static site! Let them take control of their own content with a cms.
Good to read.. Great article
You can bypass a CMS by using different php pages for you header & footer and just include them.
If something needs to be changed you can just edit it in there and voila your done for all pages.
Excellent article. It is sometimes so difficult to explain to potential clients that a Blog or a Website full of individual articles etc. are actually the same thing; they are all a CMS. This article captures that point very well.
Great chart. It really kind of explains it! No, your point is quite interesting and in my eyes makes sense. Nice article!
That’s a very “scientific” chart.
Some how, the Hummer just makes sense. :)
if ($pages > 1) {$cms = true}
FALSE lots of people use a CMS for just one page because:
* Can edit it easily using a web interface
* They can easily include extensions and plugins. (like a contact form, SM links, photo galleries)
wow! great article
What’s the css to change to Goodyear tires?
nice article, very interesting
I am a self taught coder and over the past few years I have gotten pretty good. I still have plenty to learn though.
I run quite a large site which would probably benefit from the use of a CMS. However, I cannot bring myself to go down that road. I love coding, I love everything about it. I just know if I start using a CMS coding will become less like painting and more like painting by numbers.
For all the common elements that require frequent edits on my site I simply use a PHP include.
I also have a bit of a mini-cms system in place that most of you are probably familiar with called Unify. It allows for in-line text and design editing on a page by page basis. To be honest I only really have it there to make life easier on my editor. I rarely use it, I rather dig into the code!
Anyway, CMS is very logical and it definitely make sense to use it. Will I ever use it though?…. no!
So if you are in a position where a change needs to be made on 100 pages of the site, you’ll just manually go change all 100? And the next day, another tweak needs to be make, right back through those 100 again? Or are you just saying that never happens to you. I just can’t imagine what a working life would be like (no judgement, just saying). Do you find yourself telling clients “no, sorry, we can’t make that change”?
Well with my coding software I can simply do a text replace on all open pages. So generally speaking if I have to make 100 edits it is simply a matter of doing a text replace. It would likely only take a few minutes longer for me. I know it is a little archaic but it works.
As for clients. I am sure if I designed for others I would be using CMS. However, I really only run my own site so as it stands I have no clients.
I just feel that CMS takes away from the art that is web design. I am not a professional coder but over the past three years I have learned quite a bit. If I had been using a CMS, I doubt I would have learned much more than how to create a new page on whichever CMS I am using.
I’m a right brain thinker first and foremost, which means I love to create (design) in multiple ways. I respect coders and what they do. Coding for them is like painting a beautiful portrait. However, coding and designing are not the same thing. I was shocked over the fact that some successful designers know very little CSS if and any. I take pride in being able to write my own CSS, XHTML and the little bit of Actionscript I can put together. Learning PHP has not been that easy for me. I can do the include files, link it with Actionscript and that is it. For whatever reason, I am not grasping it like I did with CSS. With that being stated and for others like myself, I need the CMS like a fish needs water. Does it take away from my creativity, No! I would love to be able to do both, like yourself Mr. Nick. If that was possible, I’d be a bad M**th**F**k** (excuse my French)- But I am not. It’s not for a lack of effort, I have all of the books, vid tutorials and countless hour of listening to Kevin Skoglund while doing his exercises. I will keep at it though, quitters never win.
Well with my coding software I can simply do a text replace on all open pages. So generally speaking if I have to make 100 edits it is simply a matter of doing a text replace. It would likely only take a few minutes longer for me. I know it is a little archaic but it works.
As for clients. I am sure if I designed for others I would be using CMS. However, I really only run my own site so as it stands I have no clients.
I just feel that CMS takes away from the art that is web design. I am not a professional coder but over the past three years I have learned quite a bit. If I had been using a CMS, I doubt I would have learned much more than how to create a new page on whichever CMS I am using.
Hey man, I think I know what your saying. That’s what I thought like 1 or 2 years ago. The point is untill you really understand a CMS you discover that a CMS is in no way shape or form limiting you to do anything. I can build every site you make exactly the same in a CMS.
Just dig into WordPress (maybe even by digWP.com) and experience this awesome moment where you find out that a CMS has unlimited options!
Goodluck on your journey,
Rick
In my opinion, unless you’re running a blog, forum or some cooperate site where users and massive storage are involved CMS is definitely the way to go. But it wont kill you to code a 5 page website and make changes to all of them at the same time….This way you will learn more and build innovative thinking.
Most of the editors out there today have different features where you can edit a number of different pages at the same time, so in essence it’s not a big deal. I love coding HTML & CSS
Wow. good article, agree with all.
Very good analogy, CSS is styling and with HTML as the Markup to display and understand content/data, with CMS and database included if the project requires. LT
I think anyone on this site should consider using http://modxcms.com/ by far and away the best and easiest CMS for beginners to experts. I’ve been using it for years now and will never turn back!
Very good article with tips and demonstration of css. This article is obviously appreciated by me as there are a huge options with css. And web designer can tweak them to decorate and design the look of the web page. Thanks again for this good post.
Hey Chris, Interesting read I always look forward to these types of posts because there’s always a really good discussion afterwards! When building a website it is pretty obvious that if it wasn’t for the powers of CSS our websites would be pretty boring. I love what XHTML and CSS do and using them with W3C standards in mind will always offer a great experience for our audience. Thanks for sharing.
CSS makes life a whole lot easier :) Interesting diagram you’ve got there. Thanks for sharing :)
Hey Chris,
I loved this. I enjoy every one of your screencasts too.
Thanks Chris
I needed to start thinking about databases and a custom CMS earlier today and was trying to get my thoughts into line on it. You’ve just helped clear my brain out! :)
LOL html as a CMS can barely wait for this :))
Like a couple of other people who’ve commented so far, I think there’s a middle-ground in Server-Side Includes. Shared HTML like copyright notices, headers, sidebars can go into files that are included into the other pages on your site. Update the header file and all the pages are updated. All without the overhead of a CMS.
And at the risk of sounding blasphemous, Dreamweaver’s Template feature provides a good solution to site-wide HTML updates for those who aren’t technically inclined and have no clue about SSIs or CMSes.
That said, I love WordPress and think that anything that makes your (or your client’s) life easier is a good thing.
I’d just like to point out to NickB that there are CMSs that allow you to code HTML cleanly and still have a CMS.
Modxcms comes to mind. Use it. Love it.
At first great title ;) intrigued me right away.
Both cms and css made my life hell a lot easier ;)
totally agree, stumbled across your website looking for css tutorials and found this. great work there!