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 ในเบราว์เซอร์เพื่อรับผลลัพธ์ต่อไปนี้