Hay un gran número de maneras de hacer esto con ColdFusion.
Application.cfc se ejecuta en cada petición y tiene dos métodos (onRequestStart
y onRequestEnd
) que se pueden utilizar para anteponer/añadir contenido a la secuencia de comandos principal en una página.
También vale la pena señalar que es posible extender/heredar su Application.cfc, lo que permite un conjunto más complejo de eventos RequestStart/End. More details here y here.
Custom Tags le permiten crear una etiqueta que se puede envolver alrededor de cada plantilla que se aplicará la disposición/etc. También permite que los atributos/etc definan texto común pero cambiante.
Por ejemplo:
<cf_page PageTitle="My Page">
[main page content]
</cf_page>
Y dentro de la etiqueta personalizada (page.cfm) tiene:
<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>
Y, por supuesto, puede crear múltiples etiquetas personalizadas, o una etiqueta que funciona de múltiples maneras dependiendo de los Atributos especificados.
Henry ya se ha mencionado MVC Marcos, pero usted no necesita hacer MVC para hacer uso de la funcionalidad de plantillas/diseño.
Fusebox puede hacer MVC, pero no requieren que lo haga, y eitherway ContentVariables de FB es una buena herramienta para la implementación de contenido modular con - a menos que su principal desarrollador puede justificar su desagrado por Fusebox (¡y sugiera una alternativa que se adapte mejor a su proyecto!), entonces no hay absolutamente ninguna razón para no hacerlo: es un marco maduro y bien conocido, fácil de usar, muchos desarrolladores, etc.
Sin embargo, si Fusebox realmente no es una opción, eche un vistazo a Charlie Arehart's list of frameworks - esa página en general es una enorme lista de herramientas que vale la pena mirar.
De todos modos, eso debería darle bastantes cosas a tener en cuenta, por ahora ...
Ha, lea esta pregunta incluso antes de darme cuenta de quién la publicó. Falta .Net eh? –