Có một số lượng lớn các cách để làm điều này với ColdFusion.
Application.cfc được thực hiện trên tất cả các yêu cầu và có hai phương pháp (onRequestStart
và onRequestEnd
) có thể được sử dụng để thêm vào trước/bổ sung nội dung vào kịch bản chính trong một trang.
Cũng đáng chú ý, có thể mở rộng/kế thừa Application.cfc của bạn, cho phép tập hợp các sự kiện RequestStart/End phức tạp hơn. More details here và here.
Custom Tags cho phép bạn tạo một thẻ mà bạn có thể quấn quanh mỗi mẫu để áp dụng cách bố trí/etc. Nó cũng cho phép các thuộc tính/etc xác định văn bản phổ biến nhưng thay đổi.
Ví dụ:
<cf_page PageTitle="My Page">
[main page content]
</cf_page>
Và bên trong thẻ tùy chỉnh (page.cfm) bạn có:
<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>
Và tất nhiên bạn có thể tạo nhiều thẻ tùy chỉnh, hoặc một thẻ mà làm việc theo nhiều cách tùy thuộc vào Thuộc tính được chỉ định.
Henry đã đề cập MVC Frameworks, nhưng bạn không cần phải làm MVC để sử dụng chức năng templating/layout.
Fusebox thể làm MVC, nhưng nó không đòi hỏi bạn làm như vậy, và eitherway ContentVariables FB của là một công cụ tốt cho việc thực hiện nội dung mô đun với - trừ khi phát triển dẫn của bạn có thể biện minh không thích mình cho Fusebox (và đề xuất một giải pháp thay thế phù hợp với dự án của bạn tốt hơn!) thì hoàn toàn không có lý do gì để không làm điều đó - nó là một khuôn khổ hoàn thiện và nổi tiếng, dễ sử dụng, nhiều nhà phát triển, v.v.
Tuy nhiên, nếu Fusebox thực sự không phải là một tùy chọn, hãy xem Charlie Arehart's list of frameworks - trang đó nói chung là danh sách rất lớn các công cụ đáng xem.
Dù sao, đó sẽ cho bạn đủ điều cần xem xét cho bây giờ ...
Ha, đọc câu hỏi này trước khi tôi nhận ra ai đã đăng nó. Thiếu. Net eh? –