首先,需要在
Thinkphp/' target='_blank'>PHP\Lib\Think\Template\TagLib\目录下增加一个文件名叫:TagLibZpass.class.php
TagLibZpass.class.php:
<?php /* Zpass自定义标签 design by zpass 16852868@qq.com,请别加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(!empty($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>
注意复制的话请view plain在复制,手工复制的源代码不正确
这个很容易理解吧
我这个只是例子,代表可以自由扩展THINKPHP标签...做自己的特色标签
以上标签例子实际是查询classes表里的内容