首先,需要在
ThinkPHP\Lib\Think\Template\TagLib\目錄下增加一個文件名叫:TagLibZpass.class.php
TagLibZpass.class.php:
<?php
/* Zpass自定義標簽 design by zpass [email protected],請別加QQ好友- -! */
class TagLibZpass extends TagLib{
// 標簽定義
protected $tags = array(
// 標簽定義:attr 屬性列表close 是否閉合(0 或者1 默認1)alias 標簽別名level 嵌套層次
'select'=>array('attr'=>'table,limit,order,where,field','level'=>3),
);
public function _select($attr,$content)
{
static $_iterateParseCache = array();
//如果已經解析過,則直接返回變量值
$cacheIterateId = md5($attr.$content);
if(isset($_iterateParseCache[$cacheIterateId]))
return $_iterateParseCache[$cacheIterateId];
$tag = $this->parseXmlAttr($attr,'table');
$db=M($tag['table']);
$list=$db->where($tag['where'])->order($tag['order'])->limit($tag['limit'])->field($tag['field'])->select();
preg_match_all("/\[field\:\w*\]/",$content,$match);
$match=$match[0];
$match=array_unique($match);//去掉數組重復項
foreach($match as $i=>$vo){
$field[$i]=substr($vo,7,count($vo)-2);
}
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);
}
}
$_iterateParseCache[$cacheIterateId] = $parseStr;
if(!emptyempty($parseStr)) {
return $this->tpl->parse($parseStr);
}
return ;
}
}
?>
然後在視圖上寫上
<taglib name='zpass' />
調用的方法是
<zpass:select table="classes" order="sort desc" field="id,title" limit="3" >
<span class="marginleft_1"><a href='{:U("News/index?id=[field:id]")}'>[field:title]</a></span>
</zpass:select>
這個很容易理解吧www.2cto.com
我這個只是例子,代表可以自由擴展THINKPHP標簽...做自己的特色標簽
以上標簽例子實際是查詢classes表裡的內容