Per CF nachträglich den Head-Bereich verändern

Mischa Sameli, Geschäftsführer & Leiter Entwicklung

ColdFusion arbeitet Code in der Regel Zeile für Zeile ab, also prozedural. Das heisst, wenn wir den Aufbau einer Seite mit cfinclude, cfmodule oder mit Komponenten modularisieren, wird der modularisierte Inhalt immer genau beim Aufruf fix in das HTML-Konstrukt geschrieben. Ein Beispiel:

1<hx> hello world</hx> <cfinclude template="navigation.cfm">

So, in diesem Beispiel wird die Navigation ausgelagert in die Datei "navigation.cfm". Was, wenn bei der Aufbereitung der Navigation nun plötzlich etwas in den Head-Bereich der Seite geschrieben werden muss? Ein zusätzliches StyleSteet? Oder ein JavaScript?

ColdFusion befindet sich in der Ausführung bereits im Body-Bereich, weil er ja den Code Zeile für Zeile abarbeitet. Aber CF wäre nicht CF, wenn nicht eine Funktion oder ein Tag zur Verfügung stehen würde: cfhtmlhead Den Tag gibts mindestens seit CF 5, im Einsatz gesehen habe ich ihn aber noch nie (und ich habe mittlerweile schon ein paar CF-Zeilen gelesen). Funktionieren tut er aber tadellos. Und zwar so:

1<cfhtmlhead text="hier der code, der in den den Head gehört"> </cfhtmlhead>

Möglich ist der Trick, da CF den gesamten Inhalt einer Seite zuerst aufbereitet und dann an den Webserver schickt. Also kann er alles einmal ausführen und am Schluss suchen, ob cfhtmlhead-Tags sowie ein HTML-Head-Tag vorhanden sind, schnipp-schnapp und die Hexerei ist perfekt.