午夜91福利视频,午夜成人在线观看,午夜在线视频免费观看,午夜福利短视频,精品午夜成人免费视频APP

模板繼承

模(mo)(mo)(mo)(mo)板(ban)(ban)繼承(cheng)是一(yi)項更加(jia)靈活的模(mo)(mo)(mo)(mo)板(ban)(ban)布局(ju)方式,模(mo)(mo)(mo)(mo)板(ban)(ban)繼承(cheng)不同于模(mo)(mo)(mo)(mo)板(ban)(ban)布局(ju),甚至來說,應該在模(mo)(mo)(mo)(mo)板(ban)(ban)布局(ju)的上層。模(mo)(mo)(mo)(mo)板(ban)(ban)繼承(cheng)其(qi)(qi)實并不難理解,就好(hao)比(bi)類(lei)的繼承(cheng)一(yi)樣,模(mo)(mo)(mo)(mo)板(ban)(ban)也可以定義(yi)一(yi)個基(ji)礎模(mo)(mo)(mo)(mo)板(ban)(ban)(或者(zhe)是布局(ju)),并且其(qi)(qi)中定義(yi)相關的區塊(block),然后繼承(cheng)(extend)該基(ji)礎模(mo)(mo)(mo)(mo)板(ban)(ban)的子模(mo)(mo)(mo)(mo)板(ban)(ban)中就可以對(dui)基(ji)礎模(mo)(mo)(mo)(mo)板(ban)(ban)中定義(yi)的區塊進行重載。

因此,模板(ban)繼承(cheng)的(de)(de)優勢(shi)其實是(shi)設計基礎模板(ban)中的(de)(de)區塊(block)和子模板(ban)中替換這些區塊。

每個區塊由{block} {/block}標(biao)(biao)簽(qian)組成。 下面就(jiu)是基礎模板中的一(yi)個(ge)典型的區塊(kuai)設(she)計(ji)(用于設(she)計(ji)網(wang)站標(biao)(biao)題):

{block name="title"}<title>網站標題</title>{/block}

block標簽必須指定(ding)name屬(shu)性來標識(shi)當前區塊(kuai)的名稱,這個標識(shi)在當前模板中應(ying)該是唯一的,block標簽中可以包含任何(he)模板內容(rong),包括其他標簽和變(bian)量,例如:

{block name="title"}<title>{$web_title}</title>{/block}

你(ni)甚至還可(ke)以(yi)在(zai)區塊中加載外部文(wen)件:

{block name="include"}{include file="Public:header" /}{/block}

一個模板中可以定義任意多個名稱標識不重復的區塊,例如下面定義了一個base.html基礎模板:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>{block name="title"}標題{/block}</title>
</head>
<body>
{block name="menu"}菜單{/block}
{block name="left"}左邊分(fen)欄{/block}
{block name="main"}主(zhu)內容{/block}
{block name="right"}右邊分欄{/block}
{block name="footer"}底部{/block}
</body>
</html>

然(ran)后(hou)我們在子(zi)模板(其實是當前操作的(de)入口模板)中(zhong)使用(yong)繼承:

{extend name="base" /}
{block name="title"}{$title}{/block}
{block name="menu"}
<a href="/" >首頁</a>
<a href="/info/" >資訊</a>
<a href="/bbs/" >論壇</a>
{/block}
{block name="left"}{/block}
{block name="main"}
{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"}
{__block__}
 @ThinkPHP 版權所有(you)
{/block}

上例中,我們可以看到在子模板中使用了extend標簽來繼承了base模板。
在(zai)子(zi)模板中,可以(yi)對基(ji)礎(chu)模板中的(de)(de)(de)區(qu)(qu)塊(kuai)進(jin)行(xing)重載(zai)定(ding)義(yi),如果沒(mei)有重新定(ding)義(yi)的(de)(de)(de)話,則表(biao)示(shi)(shi)沿用基(ji)礎(chu)模板中的(de)(de)(de)區(qu)(qu)塊(kuai)定(ding)義(yi),如果定(ding)義(yi)了(le)一個空(kong)的(de)(de)(de)區(qu)(qu)塊(kuai),則表(biao)示(shi)(shi)刪除基(ji)礎(chu)模板中的(de)(de)(de)該區(qu)(qu)塊(kuai)內容。 上面(mian)的(de)(de)(de)例子(zi),我們就把left區(qu)(qu)塊(kuai)的(de)(de)(de)內容刪除了(le),其他的(de)(de)(de)區(qu)(qu)塊(kuai)都進(jin)行(xing)了(le)重載(zai)。而

{block name="footer"}
{__block__}@ThinkPHP 版權所有
{/block}

這一區塊中有{_block_}這個(ge)標(biao)(biao)簽,當(dang)區(qu)(qu)塊(kuai)中有這個(ge)標(biao)(biao)記時,就不只是(shi)(shi)直接重載這個(ge)區(qu)(qu)塊(kuai),它表(biao)示引用所繼承(cheng)模板(ban)對應(ying)區(qu)(qu)塊(kuai)的內容(rong)到(dao)這個(ge)位置,最終(zhong)這個(ge)區(qu)(qu)塊(kuai)是(shi)(shi)合并后的內容(rong)。所以這里(li)footer區(qu)(qu)塊(kuai)最后的內容(rong)是(shi)(shi): 底(di)部@ThinkPHP 版權所有

extend標簽的用法和include標簽一(yi)樣,你(ni)也可以加載其他模板:

{extend name="Public:base" /}

或者使用絕對文件路徑加載

{extend name="./Template/Public/base.html" /}

在當(dang)前子模(mo)板中,只能(neng)定(ding)義區塊而(er)不能(neng)定(ding)義其他的模(mo)板內容,否則將會直接忽略,并且只能(neng)定(ding)義基礎模(mo)板中已經定(ding)義的區塊。

例如(ru),如(ru)果采(cai)用下(xia)面的定義:

{block name="title"}<title>{$title}</title>{/block}
<a href="/" >首頁</a>
<a href="/info/" >資訊</a>
<a href="/bbs/" >論壇</a>

導航部分(fen)將是無效的,不會顯(xian)示在模板中。

模板(ban)可以多級繼承,比如B繼承了(le)A,而(er)C又繼承了(le)B,最終C中(zhong)的區塊會覆蓋B和(he)A中(zhong)的同(tong)名區塊,但C和(he)B中(zhong)的區塊必須是A中(zhong)已定義過(guo)的。

子模(mo)板(ban)(ban)中的區塊定義(yi)順序是隨意的,模(mo)板(ban)(ban)繼承的用(yong)法關鍵在于(yu)基礎模(mo)板(ban)(ban)如何布(bu)局(ju)(ju)和(he)設(she)計規劃(hua)了,如果(guo)結合原來的布(bu)局(ju)(ju)功能,則會更(geng)加(jia)靈(ling)活。

文檔最后更新時間:2018-04-26 10:35:43

文檔
目錄

深色
模式

切換
寬(kuan)度