因此,模板繼承的優勢其實是設計基礎模板中的區塊(block)和子模板中替換這些區塊。
每個區塊由 block /block 標簽組成。 下面就是基礎模板中的一個典型的區塊設計(用于設計網站標題):
block name= title title 網站標題 /title /block
block標簽必須指定name屬性來標識當前區塊的名稱,這個標識在當前模板中應該是唯一的,block標簽中可以包含任何模板內容,包括其他標簽和變量,例如:
block name= title title {$web_title} /title /block
甚至還可以在區塊中加載外部文件:
block name= include include file= Public:header / /block
一個模板中可以定義任意多個名稱標識不重復的區塊,例如下面定義了一個base.html基礎模板:
html head meta http-equiv= Content-Type content= text/html; charset=utf-8 block name= title title 標題 /title /block /head body block name= menu 菜單 /block block name= left 左邊分欄 /block block name= main 主內容 /block block name= right 右邊分欄 /block block name= footer 底部 /block /body /html
然后我們在子模板(其實是當前操作的入口模板)中使用繼承:
extend name= base / block name= title title {$title} /title /block 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 @ThinkPHP2012 版權所有 /block
可以看到,子模板中使用了extend標簽定義需要繼承的模板,extend標簽的用法和include標簽一樣,你也可以加載其他模板:
extend name= Public:base /
或者使用絕對文件路徑加載
extend name= ./Template/Public/base.html /
在當前子模板中,只能定義區塊而不能定義其他的模板內容,否則將會直接忽略,并且只能定義基礎模板中已經定義的區塊。
例如,如果采用下面的定義:
block name= title title {$title} /title /block a href= / 首頁 /a a href= /info/ 資訊 /a a href= /bbs/ 論壇 /a
導航部分將是無效的,不會顯示在模板中。
在子模板中,可以對基礎模板中的區塊進行重載定義,如果沒有重新定義的話,則表示沿用基礎模板中的區塊定義,如果定義了一個空的區塊,則表示刪除基礎模板中的該區塊內容。 上面的例子,我們就把left區塊的內容刪除了,其他的區塊都進行了重載。
子模板中的區塊定義順序是隨意的,模板繼承的用法關鍵在于基礎模板如何布局和設計規劃了,如果結合原來的布局功能,則會更加靈活。
相關推薦:
極客學院深入ThinkPHP框架視頻教程
以上就是Thinkphp中模板繼承是什么?模板繼承的實例的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答