文章出處

一、包含文件

在一個系統中,可以包含通用的頭文件和腳文件:header 和 footer。由于每個頁面
的頭腳都是相同的,所以需要獨立分離出來,再用包含文件引入他們。
我們可以在 View 目錄下 default 主題目錄下創建一個 public 目錄,這個目錄專門存
放公共調用模版文件。

 

我們在 View/default/User/index.html 寫入的代碼為:

1 <include file="Public/header" />
2 
3     這里是內容
4 
5 <include file="Public/footer"  />

當然也可以調用絕對路徑 <include file='./Weibo/Home/View/default/Public/header.tpl' /> 

 

然后在 View/default/Public/header.html 內填入的代碼為:

1 <html>
2 <head>
3 </head>
4 <body>
5 <div class='header' >這里是頭部</div>

 

在 View/default/Public/header.html 里寫入的代碼為:

1 <div class='footer'>這里是底部</div>
2 </body>
3 </html>

最后在瀏覽器中顯示為:

 

同時調用多個模版文件: <include file='Public/header,Public/footer' /> ,這時,header.html和footer.html的內容是顯示在一起的

 

二.模版注釋

1 {//這是注釋}
2 {/*這也是注釋*/}
3 {/*這是
4 多行注釋*/}

 

三. 模版繼承

模版繼承是一項靈活的模版布局方式,它類似于子類繼承父類,然后子類還可以進行適
當的修改以滿足當前頁面的需要。

這時,在Public文件夾下新建base.html,寫入以下代碼:

 1 <html>
 2 <head>
 3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 4 <title><block name="title">這里是base的標題</block></title>
 5 </head>
 6 <body>
 7 <include file="public/header" />
 8 <block name="main">主要內容</block>
 9 <include file="public/footer" />
10 </body>
11 </html>

這時,這里的 public/header 只寫 <div class='header' >這里是頭部</div> ,不用加上<html>這些標簽了,因為base.html已經寫了。兩個都寫就重復了。

footer.html也是同樣的道理。

然后在 View/User/index.html 中開始調用繼承base.html了

1 <extend name='public/base'/>
2 <block name="title">這里改成自己的標題</block>
3 <block name="main">這里直接寫內容</block>

這里用 extend 來繼承,然后用 block 標簽來改變需要改變的內容,記住在 base.html 中的 block 標簽是必須要加上 name 的,要不然在需要繼承的

文件里就無法做相應的修改了。

這時,瀏覽器中顯示為:

 

四、模版布局

ThinkPHP 的模版引擎內置了布局模版功能支持,可以方便實現模版布局以及布局嵌套
功能。有三種布局方式:

1.全局配置方式

在 WeiBo/Common/Conf/config.php 中插入以下配置:

 

1 'LAYOUT_ON'=>true,
2 'LAYOUT_NAME'=>'Public/layout',

 

然后在 View/Public/layout.html 中寫入以下代碼:

 1 <html>
 2 <head>
 3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 4 <title>這里是標題</title>
 5 </head>
 6 <body>
 7 <include file="public/header" />
 8 {__CONTENT__}
 9 <include file="public/footer" />
10 </body>
11 </html>

這時直接在 View/User/index.html 下寫 這里是user文件 ,

瀏覽器顯示為:

也就是 View/User/index.html 中的‘這里是user文件’是 View/Public/layout.html 中的 {__CONTENT__} ,如果不用 {__CONTENT__} ,也可以在 WeiBo/Common/Conf/config.php 中寫入 'TMPL_LAYOUT_ITEM' =>'{__REPLACE__}', 這時,以后就可以用 {__REPLACE__} 代替 {__CONTENT__} 了。

這時在 View/User/index.html  下任意建立一個文件,寫上內容,就會直接調用 View/Public/layout.html 內的內容,然后加上在該文件中的寫入的內容一起輸出

 

子模版不需要載入模版基頁,可以在開頭加上{__NOLAYOUT__},

也就是在 View/User/ 下建立的文件,如果不想調用 Public/layout.html 里的內容,就可以在 View/User/ 下建立的文件中加上:

1 {__NOLAYOUT__}

這時就只顯示該文件里寫入的內容,而不再繼承 Public/layout.html 的內容了。

 

 

 

2.模版標簽方式

標簽方式,并不需要在系統做任何配置,和模版繼承類似,直接引入即可。

也就是不需要在 WeiBo/Common/Conf/config.php 里加上:

 

1 'LAYOUT_ON'=>true,
2 'LAYOUT_NAME'=>'Public/layout',

 

直接在子模版下建立的文件中寫入:

1 <layout name="Public/layout" />

一定要注意,最后的/>里的/一定要記得寫,不然就不能引入該模版了

 

如果要替換掉 {__CONTENT__} ,則寫成:

1 //替換變量的方法
2 <layout name="Public/layout" replace="{__REPLACE__}" />

 

 

3.layout 控制布局
這個方法是在控制器里操作的。

在 Home/controller/UserController.class.php 中寫入:

1 class UserController extends Controller {
2         public function index() {
3             layout('Public/layout');
4             $this->display();
5         }
6         
7 }

這里說明一下,function里的 $this->display(); 一定要寫啊,沒寫的話 View/User/index.html 根本就沒有任何輸出啊。

如果是 layout( true); 是引入默認地址基頁,但是我刷新總是什么也沒有,這個就算了,以后按照 layout('Public/layout'); 這樣寫好了,還安全有保障。

1 public  function index() {
2 layout('Public/layout');
3 //layout(false); //關閉
4 $this->display()
5 }

 

九.模版替換

在模版渲染之前,系統還會對讀取的模版內容進行一些特殊字符串替換操作,也就實現
了模版輸出的替換和過濾。這里的替換其實也就是在瀏覽器中輸出的意思。

 

在 View/User/index.html 中輸入:

__ROOT__: 會替換成當前網站的地址(不含域名)
__APP__: 會替換成當前應用的 URL 地址 (不含域名)
__MODULE__:會替換成當前模塊的 URL 地址 (不含域名)
__CONTROLLER__(或者__URL__ 兼容考慮): 會替換成當前控制器的 URL 地址(不含域名)
__ACTION__:會替換成當前操作的 URL 地址 (不含域名)
__SELF__: 會替換成當前的頁面 URL
__PUBLIC__:會被替換成當前網站的公共目錄 通常是 /Public/

 

在 WeiBo/Common/Conf/config.php 中增加以下代碼:

1 'TMPL_PARSE_STRING' => array(
2 '__PUBLIC__' => '/Common', // 更改默認的/Public 替換規則
3 '__UPLOAD__' => '/Uploads', // 增加新的上傳路徑替換規則
4 )

然后在 View/User/index.html 中輸入 __PUBLIC__ ,在瀏覽器中輸出為: /Common 

PS:__PUBLIC__可以改成--PUBLIC--同樣的也可以。

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()