Rob asks:

Is there a <cfhtmlfoot> tag? One that would write at the end of html file, before </body> tag...

In case folks don't get why he is asking, ColdFusion comes with a cfhtmlhead tag that lets you dynamically add stuff to the HEAD portion of an HTML document. There is not a corresponding tag like what Rob wants, but there is no reason we can't hack one up in a custom tag. My solution will make use of both the Request scope and the oft-maligned (by me) onRequest function. First, a sample page:

<cf_htmlfoot text="<p>© Raymond Camden #year(now())#"> <html>

<head> <title>Test</title> </head>


<p> Woohoo,web design kicks butt. </p>

</body> </html>

This is a trivial page with simple text on it. Note the call to the custom tag, htmlfoot, on top. The custom tag just does this:

<!--- the text to add ---> <cfparam name="attributes.text" default="">

<!--- where we store it ---> <cfparam name="request.footertext" default="">

<!--- add it ---> <cfset request.footertext &= attributes.text>

As you can see, we simply take your text, and append it to the text we want to add to the foot. This actually makes my tag better as I don't think you can have multiple cfhtmlhead tags. If I weren't so lazy, I'd also make the custom tag support this syntax:

<cf_htmlfoot> Foo Foo </cf_htmlfoot>

Anyway, the last step is to enable onRequest to notice the Request scope variable we created:

<cffunction name="onRequest" returnType="void"> <cfargument name="thePage" type="string" required="true"> <cfset var content = "">

<cfsavecontent variable="content"> <cfinclude template="#arguments.thePage#"> </cfsavecontent>

<cfif structKeyExists(request, "footertext")> <cfset content = replacenocase(content, "</body>", "#request.footertext#</body>")> </cfif>

<cfoutput>#content#</cfoutput> </cffunction>

There isn't much to talk about here. All I did was look for the Request variable, and if it existed, I insert it into the result HTML before outputting it to the browser. Again, I'm not a big fan of onRequest, but this is an interesting example of how one could use it.