Defining templates for common look and feel pragmatically
I have a new project which simply put, is an attempt to formalize the look and feel of all of our departmental pages. I Googled around and found many tutorials which discussed the pros and cons of several techniques. And from what I've been reading, the thing I'm ooking for is controls. Basically, I want a common header and footer.
<header> <content> <footer>
The content portion would be where I'd place specific content pertaining to the department. I could make a blank template which include both header and footer, which was my original idea. Then, once the time comes to create a new page, I would then copy and template and start filling in the content. Is there a simpler way of doing this pragmatically?
Masterpages would seem to be what you are looking for.
Conceptually, I think you're very much on the right track. It's much easier to conceive of a page model in terms of some very simple containers (header, footer, content). You can take it a step further by defining blocks of display logic (top navbar, footer links, left ad bar, etc.) that you can use to populate the larger containers.
Pragmatically, how would you do this? First, it depends on what platform and language you're using. Solutions for .NET, Java, PHP, or flat HTML could be implemented differently depending on where you choose to draw the lines. In flat HTML, one way is to use #include files. In the programming languages, you have to decide what your outermost container structure is going to be and how you're going to define the building blocks (which by default defines how you aggregate them). There are many possible ways to do this.
And are you going to be the person creating & managing the site, or will you be delegating that responsibility to a team of non-technical content owners across your organization? That answer can bear heavily on your design choices.
In many of the content management systems, the idea is to cleanly separate content from presentation. So there is a generic content storage paradigm typically in a database and then there is a dynamic way to present that content out through some display mechanism written in a lightweight platform.
You'd want to look for a templating library (I don't use .NET, so I can't make any specific recommendations) to assemble your various templates into pages on the fly rather than using the copying-based method you described. Otherwise you'll find yourself copying the templates around to make all your pages on Monday, then the template will change on Tuesday and you'll need to either revise or re-create all the pages to match the new template.