Websites like Wordpress and Tumblr allow designers to produce styles that customers can choose. Generally how does one architect a web site to be flexible enough to permit custom styles for customers?

Have a look how Django will it. Django utilizes a Model-View-Controller-like approach that you use sights to populate a context, after which use that context to process a template. Observe that Django features its own MVC terminology.

For instance, as we state that our context reads the following (in pseudo code),

author = 'mntnoe'

title = 'My Title'

content = '<p>This is my content</p>'

we're able to make use of the following template:

<h1></h1>

<div class="author">Author: </div>

<div class="content">



</div>

Now, you're liberated to replace web site (or assortment of templates) with a different one without having affected the way the site works.

Seperate content from formatting by utilizing proper html and css. Which means using css files for that style instead of inline style within the html.

You may make several css files (styles if you want), and switch together using javascript.

Let your serverside technology of preference simply generate simple to adjust, by css and pictures, html. An excellent site of good examples is http://world wide web.csszengarden.com/. It produces exactly the same html each time but uses different css and pictures to create it. Have a look in the html they generate to obtain ideas.