ThinkPHP自定義標籤
研究ThinkPHP自定義標籤的時候,發現網上很多教程都很亂,官網又沒有給出比較詳細的方法,所以就自己研究了一下,現在將ThinkPHP的方法詳細的記錄下來。
1.建立TP的專案,略過
2.在config.php中加入`APP_AUTOLOAD_PATH`=>`@.TagLib`,自動載入TagLib裡面的檔案
3.在專案名稱/Lib中建立TagLib資料夾
4.在TagLib資料夾中新建一個TagLibXl.class.php檔案(格式:TagLib自定義的名稱,首字母大寫)
5.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
<?php import( `TagLib` );
class TagLibXl extends TagLib{
protected $tags = array (
`list` => array (
`attr` => `table,limit` , //設定標籤屬性
`level` => `3` , //迴圈次數
`close` => `1` , //是否閉合
),
);
function _list( $attr , $content ){
$tag = $this ->parseXmlAttr( $attr , `list` ); //解析操作,TP的自定義標籤是基於xml的
$db =M( $tag [ `table` ]); //根據返回的table值例項化
$list = $db ->limit( $tag [ `limit` ])->select(); //查詢返回資料
preg_match_all( "/[field:w*]/" , $content , $match ); //獲取返回值裡[field:xxx]這種格式
$match = $match [0];
$match = array_unique ( $match ); //去掉陣列重複項
foreach ( $match as $i => $vo ){
$field [ $i ]= substr ( $vo ,7, count ( $vo )-2);
}
//以下迴圈為遍歷將[field:xxx]格式替換為實際內容
foreach ( $list as $i => $value ){
if ( $i ==0){
$parseStr = $content ;
} else {
$parseStr = $parseStr . $content ;
}
foreach ( $match as $j => $vo ){
$parseStr = str_replace ( $vo , $value [ $field [ $j ]], $parseStr );
}
}
//解析內容模板,並返回字串
if (! empty ( $parseStr )) {
return $this ->tpl->parse( $parseStr );
}
return ;
}
} |
在模板中使用方法:
1
2
3
4
5
6
|
< taglib name = "xl" />
< ul >
< xl:list table = "Article" limit = "0,3" >
< li >< span >[field:id]</ span >< a href = "" >[field:title]</ a ></ li >
</ xl:list >
</ ul >
|
本文轉自 3147972 51CTO部落格,原文連結:http://blog.51cto.com/a3147972/1333525,如需轉載請自行聯絡原作者
相關文章
- 自定義標籤【迭代標籤】薦
- 自定義標籤FlowTagLayout
- java自定義標籤Java
- spring 自定義標籤Spring
- 建立自定義標籤庫
- jQuery Mobile 自定義標籤jQuery
- ViewPager之標籤的自定義Viewpager
- 關於自定義標籤庫
- 有關自定義標籤庫
- 深入淺出自定義標籤(三)操作標籤體薦
- 08.Django自定義模板,自定義標籤和自定義過濾器Django過濾器
- JSP 自定義標籤介紹JS
- 【14】vue.js — 自定義標籤Vue.js
- 自定義分頁標籤詳解
- spring2自定義標籤Spring
- 自定義標籤出現問題
- JSP自定義標籤之三:為標籤新增屬性JS
- jQuery自定義標籤程式碼例項jQuery
- JSP第六篇【自定義標籤之傳統標籤】JS
- Eclipse預設標籤TODO,XXX,FIXME和自定義標籤Eclipse
- JSP自定義標籤就是如此簡單JS
- 擴充spring元件之自定義標籤Spring元件
- 記錄一種自定義標籤的用法
- jsp如何自定義tag的標籤庫?JS
- JSP自定義標籤系列---rtexprvalue屬性JS
- 自定義html標籤和表單屬性HTML
- 自定義Watir可識別標籤[Z重要!!!]
- Django自定義模板標籤與過濾器Django過濾器
- 聊聊自定義SPI如何使用自定義標籤注入到spring容器中Spring
- Android自定義控制元件之自定義ViewGroup實現標籤雲Android控制元件View
- 實戰練習之Jsp自定義標籤JS
- jsp自定義標籤系列之---用法實力JS
- 求助:如何中斷jsf中多個自定義標籤中的其他標籤JS
- jsp的三種自定義標籤 寫法示例JS
- 急急急急!Struts自定義標籤html:text 問題HTML
- Django5關於 自定義過濾器和標籤Django過濾器
- spring原始碼深度解析— IOC 之 自定義標籤解析Spring原始碼
- 【Django】編寫自定義模板標籤tags 和 過濾器Django過濾器