ThinkPHP自定义标签

   研究ThinkPHP自定义标签的时候,发现网上很多教程都很乱,官网又没有给出比较详细的方法,所以就自己研究了一下,现在将ThinkPHP的方法详细的记录下来。

   1.建立TP的项目,略过

   2.在config.php中加入'APP_AUTOLOAD_PATH'=>'@.TagLib',自动加载TagLib里面的文件

   3.在项目名称/Lib中建立TagLib文件夹

   4.在TagLib文件夹中新建一个TagLibXl.class.php文件(格式:TagLib自定义的名称,首字母大写)

   5.

<?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 ;
    }
}



在模板中使用方法:

<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>

footer.jpg   群号:252799167,大家可以加群一起交流学习


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值