Есть огромное количество способов сделать это с помощью ColdFusion.
Application.cfc выполняется при каждом запросе, и имеет два метода (onRequestStart
и onRequestEnd
), которые могут быть использованы для предварять/добавить содержимое в основной сценарий на странице.
Также стоит отметить, что вы можете расширить/наследовать свой Application.cfc, позволяя более сложный набор событий RequestStart/End. More details here и here.
Custom Tags позволяют создать тег, который можно обернуть вокруг каждого шаблона, чтобы применить макет/и т.д.. Он также позволяет атрибутам/etc определять общий, но изменяющий текст.
Например:
<cf_page PageTitle="My Page">
[main page content]
</cf_page>
А внутри пользовательского тега (page.cfm) у вас есть:
<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>
И, конечно, вы можете создать несколько пользовательских тегов, или один тег, который работает несколькими способами в зависимости от указанных атрибутов.
Генри уже упоминалось MVC Каркасы, но вам не нужно делать MVC, чтобы использовать функциональные возможности шаблонный/макета.
Fusebox может сделать MVC, но это не требует вас сделать это, и eitherway ContentVariables FB являются хорошим инструментом для реализации модульного контента с - если ваш ведущий разработчик не может оправдать свою неприязнь к Fusebox (и предложите альтернативу, которая лучше подходит вашему проекту!), тогда нет абсолютно никаких оснований не идти на это - это зрелая и хорошо известная структура, проста в использовании, множество разработчиков и т. д.
Однако, если Fusebox действительно не является вариантом, взгляните на Charlie Arehart's list of frameworks - эта страница в целом представляет собой огромный список инструментов, на которые стоит обратить внимание.
Во всяком случае, это должно дать вам достаточно вещей, чтобы рассмотреть сейчас ...
Ха, прочитайте этот вопрос, прежде чем я даже понял, кто его разместил. Отсутствует .Net а? –