模闆繼承是(shì)一(yī)項更加靈活的(de)模闆布局方式,模闆繼♠☆φ★承不(bù)同于模闆布局,甚至來(lái)說(shuō),應該在模闆☆♣£布局的(de) 上(shàng)層。模闆繼承其實并不(bù)難ε¶π>理(lǐ)解,就(jiù)好(hǎo)比類的(de)繼承一(yī)樣α≤✘,模闆也(yě)可(kě)以定義一(yī)個(gè)基礎模闆(或者是 ≥(shì)布局),并且其中定義相(xiàng)關的(de)區(qū)塊(b↓¶©lock),然後繼承 (extend)該基礎模&↑ε闆的(de)子(zǐ)模闆中就(jiù)可(kě)以 ®≠對(duì)基礎模闆中定義的(de)區(qū)塊進行(xín♥ ¥g)重載。
因此,模闆繼承的(de)優勢其實是(shì)設計(jì)基礎模闆∏<中的(de)區(qū)塊(block)和(hé)子 ®↑↓(zǐ)模闆中替換這(zhè)些(xiē)區(qū)塊。
每個(gè)區(qū)塊由<block></block>$ ×标簽組成。 下(xià)面就(jiù)是(shì)基礎模闆中的(de)§¶一(yī)個(gè)典型的(de)區(qū)塊設計(jì÷₩₩ )(用(yòng)于設計(jì)網站(zhàn)标題):
<block name="title"><title>網站(zhàn)标題</title></block>
block标簽必須指定name屬性來(lái)标識當前區(qū☆∑)塊的(de)名稱,這(zhè)個(gè)标識在當前模闆中應該是(sh§↔§ì)唯一(yī)的(de),block标簽中可(kě)以包含任何模闆內(♥ ↑≤nèi)容,包括其他(tā)标簽和(hé)變量,例如(r ¥∏ú):
<block name="title"><title>{$web_title}</title></block>
你(nǐ)甚至還(hái)可(kě)以在區(qū)塊中加載&α外(wài)部文(wén)件(jiàn):
<block name="include"><include file="Public:header" /></block>
一(yī)個(gè)模闆中可(kě)以定義任意多(duō)個(g±<£βè)名稱标識不(bù)重複的(de)區(qū)塊,例如(rú)♥©下(xià)面定義了(le)一(yī)個(gè)base.html基礎模闆:
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8&q≤&™uot;><block name="title"><title>标題</title></bloc♥γk></head><body><block name="menu">菜單</block><block name="left">左邊分(fēn)欄</block><block name="main">主內(nèi)容</block><block name="right">右邊分(fēn)欄</block><block name="footer">底部</block></body></html>
然後我們在子(zǐ)模闆(其實是(shì)當前操作(zuò)的(de)入口模 γ闆)中使用(yòng)繼承:
<extend name="base" /><block name="title"><title>{$title}</title></b§≠lock><block name="menu"><a href="/" >首頁</a><a href="/info/" >資訊</a><a href="/bbs/" >論壇</a></block><block name="left"></block><block name="content"><volist name="list" id="vo"><a href="/new/{$vo.id}"εβ€÷;>{$vo.title}</a><br/>{$vo.content}</volist></block><block name="right">最新資訊:<volist name="news" id="new"><a href="/new/{$new.id}">{$new.title}</a><br/></volist></block><block name="footer">@太原博創科技開發有限公司 版權所有(yǒu)</block>
可(kě)以看(kàn)到(dào),子(zǐ)模闆中≠•↓使用(yòng)了(le)extend标簽<δ 定義需要(yào)繼承的(de)模闆,extend标簽的(de)用(§₹&yòng)法和(hé)include标簽一∑∑↔(yī)樣,你(nǐ)也(yě)可(kě)以♥★•¶加載其他(tā)模闆:
<extend name="Public:base" />
或者使用(yòng)絕對(duì)文(wén)件(jiàn)路(l< ù)徑加載
<extend name="./Template/Public/base.html"£↕α☆; />
在當前子(zǐ)模闆中,隻能(néng)定義區(qū≠♠↑δ)塊而不(bù)能(néng)定義其他(tā)的≈÷☆(de)模闆內(nèi)容,否則将會(huì)直接忽略,并且隻能(néng)• •✔定義基礎模闆中已經定義的(de)區(qū)塊。
例如(rú),如(rú)果采用(yòng)下(xià)λ&面的(de)定義:
<block name="title"><title>{$title}</title></block$γ><a href="/" >首頁</a><a href="/info/" >資訊</a><a href="/bbs/" >論壇</a>
導航部分(fēn)将是(shì)無效的(de),不(bù)會(huì) <顯示在模闆中。
在子(zǐ)模闆中,可(kě)以對(duì)基礎模闆中> 的(de)區(qū)塊進行(xíng)重載定義,如(rú)果沒有"₽(yǒu)重新定義的(de)話(huà),則表示沿用(yòng)基礎→∑←模闆中的(de)區(qū)塊定義,如(rú)果定義了(le)一(yī)個(gè ✘)空(kōng)的(de)區(qū)塊,則表示删除基礎模闆中的(d↕✔e)該區(qū)塊內(nèi)容。 上(shàn£πφ©g)面的(de)例子(zǐ),我們就(jiù)把l★$"✘eft區(qū)塊的(de)內(nèi)容删除了(le),其他(tā)的(d≤ελ¥e)區(qū)塊都(dōu)進行(xín™₽♠ g)了(le)重載。
子(zǐ)模闆中的(de)區(qū)塊定義順序是(shì)随意的(de),≈←α∏模闆繼承的(de)用(yòng)法關鍵在于基礎模闆如(rú)何布局和(hé)設♣§計(jì)規劃了(le),如(rú)果結合原來(lái)₽λ©π的(de)布局功能(néng),則會(huì)更加靈活。∞↕↕




