Es gibt eine große Anzahl von Möglichkeiten, dies mit Coldfusion zu tun.
Application.cfc wird bei jeder Anfrage ausgeführt und verfügt über zwei Methoden (onRequestStart
und onRequestEnd
), die verwendet werden können, um Inhalte an die Haupt-Skript auf einer Seite prepend/anhängen.
Es ist auch erwähnenswert, dass es möglich ist, Ihre Application.cfc zu erweitern/zu erben, was einen komplexeren Satz von RequestStart/End-Ereignissen ermöglicht. More details here und here.
Custom Tags können Sie einen Tag erstellen, die Sie um jede Vorlage wickeln können das Layout/etc anzuwenden. Außerdem können Attribute/etc gemeinsamen, aber sich ändernden Text definieren.
Zum Beispiel:
<cf_page PageTitle="My Page">
[main page content]
</cf_page>
und innerhalb des benutzerdefinierten Tags (page.cfm) Sie haben:
<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>
Und natürlich können Sie entweder mehrere benutzerdefinierte Tags erstellen können, oder Tag eine, die funktioniert auf verschiedene Arten abhängig von den angegebenen Attributen.
Henry bereits erwähnt MVC Frameworks, aber Sie brauchen nicht MVC zu tun Verwendung von Templat/Layout-Funktionalität zu machen.
Fusebox kann MVC tun, aber es funktioniert nicht benötigen Sie so zu tun, und FB des ContentVariables sind ein gutes Werkzeug für die Realisierung modularer Inhalte mit Eitherway - es sei denn, Ihr Hauptentwickler für Fusebox rechtfertigen seine Abneigung (und schlagen Sie eine Alternative vor, die zu Ihrem Projekt passt!), dann gibt es absolut keinen Grund, nicht darauf einzugehen - es ist ein ausgereiftes und bekanntes Framework, einfach zu bedienen, viele Entwickler und so weiter.
Allerdings, wenn Fusebox wirklich keine Option ist, werfen Sie einen Blick auf Charlie Arehart's list of frameworks - diese Seite im Allgemeinen ist eine riesige Liste von Tools, die einen Blick wert sind.
Wie auch immer, das sollte man genug Dinge gibt jetzt zu prüfen ...
Ha, lies diese Frage, bevor ich überhaupt merkte, wer es gepostet hat. Vermisst .Net wie? –