You might have noticed how this website maintains a standard-looking appearance throughout it, and might be wondering how I maintain this template-ish format. The answer for me did not lie in writing PHP, Perl, using databases, or using complicated Apache modules to achieve this effect. It’s all done fairly simply with Server Side Includes (SSI’s).

A poster on Slashdot suggested the method I’m using: separate the content from the surrounding information. This is achieved by having three files for any particular page I want to create: the content file, the template file, and the settings file.

An example

I’m going to walk you through how an example page, my Opinion page is created. Note that I have my Apache install set to have Server Side Includes enabled for files ending in .html

The Content File

The content file contains the content for a particular page; this information is generally what is found in the body of an HTML page, between the body tags. Note our example content file contains only HTML related directly to the content; there is no header information in this file. I use the suffix of .src.html for these files, to indicate they are only the content of an HTML page, without the full headers and such.

The Settings File

The settings file is the one that is actually referenced by the URL in a person’s browser. It is very small; all it does is set some variables for use by the content file or the template file, such as the title and the location of the `content file, and then it simply includes the template file. Generally, this file is the index.html file for a particular directory.

The Template File

The template file provides the overall layout for all the pages that use that template, saying what sort of information gets put where, and providing HTML header information, such as the title. This template file is used for all pages on the site; it uses variables set by the content file or itself to reference small pieces of information that are specific for each page, such as the title, and the location of the content. however, in practice my template has a suffix of .html.

Putting it all together

That’s it! The finished product incorporates all three parts, to present the final page.