There are a huge number of ways to do this with ColdFusion.
Application.cfc is executed on every request and has two methods (onRequestStart
and onRequestEnd
) that can be used to prepend/append content to the main script in a page.
Also worth noting, it is possible to extend/inherit your Application.cfc, allowing for a more complex set of RequestStart/End events. More details here and here.
Custom Tags allow you to create a tag that you can wrap around each template to apply the layout/etc. It also allows attributes/etc to define common but changing text.
For example:
<cf_page PageTitle="My Page">
[main page content]
</cf_page>
And inside the custom tag (page.cfm) you have:
<cfif ThisTag.ExecutionMode EQ 'start'>
<cfparam name="Attributes.PageTitle" default=""/>
<cfcontent reset/><cfoutput><!DOCTYPE html>
<html>
<head>
<title>My Website - #Attributes.PageTitle</title>
[styles and scripts and stuff]
</head>
<body>
<div id="heading">
<img src="my_website_logo.png" alt="My Website"/>
</div>
<ul id="mainmenu" class="nav">
[menu]
</ul>
<h1>#Attribute.PageTitle#</h1>
</cfoutput>
<cfelse>
<cfoutput>
<div id="footer">
[footer]
</div>
</body></html></cfoutput>
</cfif>
And of course you can either create multiple custom tags, or one tag which works in multiple ways depending on the Attributes specified.
Henry has already mentioned MVC Frameworks, but you don't need to do MVC to make use of templating/layout functionality.
Fusebox can do MVC, but it doesn't require you to do so, and eitherway FB's ContentVariables are a good tool for implementing modular content with - unless your lead developer can justify his dislike for Fusebox (and suggest an alternative that fits your project better!) then there is absolutely no reason not to go for it - it is a mature and well-known framework, easy to use, plenty of developers, and so on.
However, if Fusebox really is not an option, take a look at Charlie Arehart's list of frameworks - that page in general is a huge list of tools worth looking at.
Anyway, that should give you enough things to consider for now...