Moving this site into the realm of a developer's library posed a number of challenging publishing problems, not the least of which was reformatting all that valuable archived content to fit the new scheme.
The actual collection of stories wasn't that massive - just over 200 individual columns, tutorials, and demos - but we knew that if we redesigned all those pages, this would be the last time that we'd ever want to undertake such a chore. So, after stripping the old design from the content, we left the text as simple as possible. Then we created an associated file of metadata about each column. By keeping the content and its metadata separate from the presentation and behavior of each page, we created the foundation of an exceptionally flexible template system. Each metadata file includes the following information about our stories:
<!--#set var="headline" value="..." -->
<!--#set var="date" value="..." -->
<!--#set var="new" value="..." -->
<!--#set var="author" value="..." -->
<!--#set var="author_email" value="..." -->
<!--#set var="author_url" value="..." -->
<!--#set var="author_image" value="..." -->
<!--#set var="author_tagline" value="..." -->
<!--#set var="collection" value="..." -->
<!--#set var="subjects" value="..." -->
<!--#set var="threads_text" value="..." -->
<!--#set var="threads_link" value="..." -->
<!--#set var="url" value="..." -->
<!--#set var="page1_title" value="..." -->
<!--#set var="page1_url" value="..." -->
<!--#set var="page2_title" value="..." -->
<!--#set var="page2_url" value="..." -->
After finishing the basic design, we built templates that would pair a story's metadata (headline, byline, etc.) with the actual content, and then merge it with the presentation, all at serving time, rather than in the production phase. This means everything is assembled when you hit a page, allowing us to update and tweak the design of everything as much as we want - even after we've published - by simply editing a single template file. The template system was built using the eXtended Server Side Include (XSSI) module on the Apache server. (For a more detailed look at how XSSI works, check out Nadav's column on the subject.)
next page»