TurboGears - รวม
สามารถรวมเนื้อหาของเอกสาร XML อื่น (โดยเฉพาะเอกสาร HTML) โดยใช้แท็กการรวมในเอกสารปัจจุบัน ในการเปิดใช้งานการรวมดังกล่าวต้องประกาศ XInclude namespace ในองค์ประกอบรากของเอกสาร HTML
<html xmlns = "http://www.w3.org/1999/xhtml" xmlns:xi = "http://www.w3.org/2001/XInclude >
คำประกาศข้างต้นระบุว่ามีคำสั่งประกอบด้วย ‘xi’คำนำหน้า ในการเพิ่มเนื้อหาของหน้า html อื่นในเอกสารปัจจุบันให้ใช้ xi: include directive ดังนี้ -
<xi:include href = "somepage.html" />
ในตัวอย่างต่อไปนี้ root.py มีตัวควบคุม include () ซึ่งแสดง include.html
from hello.lib.base import BaseController
from tg import expose, request
class RootController(BaseController):
@expose('hello.templates.include')
def include(self):
return {}
หัวเรื่องและส่วนท้าย HTML
ใน include.html มีการประกาศรวมเนมสเปซและเพิ่มเนื้อหาของ header.html และ footer.html นี่คือสคริปต์ HTML ของเทมเพลต \ include.html -
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:xi = "http://www.w3.org/2001/XInclude">
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<xi:include href = "heading.html" />
<h2>main content </h2>
<xi:include href = "footer.html" />
</body>
</html>
นี่คือรหัส template \ Heading.html -
<html>
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<h1>This is page Header</h1>
</body>
</html>
ต่อไปนี้คือ template \ footer.html
<html>
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<h3>This is page footer</h3>
</body>
</html>
เริ่มการพัฒนาโดยใช้กระปุกเกียร์และป้อน http://localhost:8080/includeในเบราว์เซอร์ ผลลัพธ์ที่แสดงจะเป็นดังที่แสดงด้านล่าง -
วิธีนี้สามารถสร้างมุมมองแบบแยกส่วนได้ หากทรัพยากรที่กล่าวถึงใน xi: include directive ไม่พร้อมใช้งานจะเกิดข้อผิดพลาดขึ้น ในกรณีนี้ทรัพยากรทางเลือกอาจถูกโหลดโดยใช้ xi: fallback
<xi:include href = “main.html”>
<xi:fallback href = ”default.html”/>
</xi.include>
การรวมเนื้อหาสามารถทำให้ไดนามิกเป็นแอตทริบิวต์ href ที่สามารถมีนิพจน์ได้
เพิ่มตัวควบคุมต่อไปนี้ใน root.py
@expose('hello.templates.ref-include')
def refinclude(self):
return {'pages':['heading','main','footer']}
บันทึกรหัสต่อไปนี้เป็น ref-include.html ในโฟลเดอร์แม่แบบ
<html xmlns = "http://www.w3.org/1999/xhtml"
xmlns:py = "http://genshi.edgewall.org/"
xmlns:xi = "http://www.w3.org/2001/XInclude">
<head>
<title>TurboGears Templating Example</title>
</head>
<body>
<xi:include href = "${name}.html" py:for = "name in pages" />
</body>
</html>
ก่อนเริ่มเซิร์ฟเวอร์ตรวจสอบให้แน่ใจว่าโฟลเดอร์แม่แบบมี head.html, main.html และ footer.html ป้อนhttp://localhost:8082/refinclude ในเบราว์เซอร์เพื่อรับผลลัพธ์ต่อไปนี้