php taglib.php,thinkphp5 taglib自定义标签教程

学着写了一下,终于搞定了,顺便分享一下!

taglib是tp框架自定义标签功能,如果你用过cms,肯定见过类似:

{dede:arclist typeid='' row='' col='' titlelen='' infolen='' orderby='' keyword=''}

ssss...

{/dede:arclist}

或者:

{pc:content action="lists" cache="3600" num="20" page="$page"}

{/pc}

这样的操作,这对于开发工作是挺方便的,

所以觉得有必要看下tp的taglib,教程如下:

1 、在common(我是在common,你自己看,反正是用命名空间载入)里新建目录taglib

2、在taglib里新建Cc.php 继承think的Tglib,代码如下:

* Created by PhpStorm.

* User: lichenchen

* Date: 2018/3/25

* Time: 下午8:34*/namespace app\common\taglib;usethink\template\TagLib;useapp\common\model\Article;class Cc extendsTagLib

{protected $tags =['articles' => ['attr'=> 'field,id,limit,cid,order,returnname', 'close'=>1]

];/**

* 文章标签*/

public function tagArticles($tag, $content)

{$id = $tag['id']?$tag['id']:'vo';$order = empty($tag['order']) ? "'id DESC'" : '"'.$tag['order'].'"';$returnname = 'article_data';$field = "''";if (!empty($tag['field'])) {if (strpos($tag['field'], '$') === 0) {$field = $tag['field'];$this->autoBuildVar($field);

}else{$field = "'{$tag['field']}'";

}

}$cid = "''";if (!empty($tag['cid'])) {if (strpos($tag['cid'], '$') === 0) {$cid = $tag['cid'];$this->autoBuildVar($cid);

}else{$cid = "'{$tag['cid']}'";

}

}$limit = "''";if (!empty($tag['limit'])) {if (strpos($tag['limit'], '$') === 0) {$limit = $tag['limit'];$this->autoBuildVar($limit);

}else{$limit = "'{$tag['limit']}'";

}

}else{$limit = '0,5';

}$parse = <<

\$$returnname = \app\common\model\Article::taglib_articles(['field' => {$field},

'cid'=>{$cid},

'limit'=>{$limit},

'order'=>{$order}

]);?>{volist name="{$returnname}" id="{$id}"}

{$content}

{/volist}

parse;return $parse;

}

}

这里演示的是一个文章标签 articles

里面调用了Article模型的静态方法taglib_articles , 顺便也贴下代码吧,就是根据条件查询的

public static function taglib_articles($param)

{$field = $param['field'];$cid = $param['cid'];$limit = $param['limit'];$order = $param['order'];$result = Article::where('cid', 'in',$cid)->field($field)->limit($limit)->order($order)->select();return $result;

}

之后,在tp的配置文件里,加一条配置载入自定义标签文件的

//+----------------------------------------------------------------------

// | 模板设置

// +----------------------------------------------------------------------

'template' =>[//模板引擎类型 支持 php think 支持扩展

'type' => 'Think',

//模板路径

'view_path' => '',

//模板后缀

'view_suffix' => 'html',

//模板文件名分隔符

'view_depr' => DS,

//模板引擎普通标签开始标记

'tpl_begin' => '{',

//模板引擎普通标签结束标记

'tpl_end' => '}',

//标签库标签开始标记

'taglib_begin' => '{',

//标签库标签结束标记

'taglib_end' => '}',

'taglib_pre_load' => 'app\common\taglib\Cc',],

就是:'taglib_pre_load'     =>    'app\common\taglib\Cc', 这条 。

之后就可以在模版里使用了

{cc:articles cid="1" field='id,title' limit="2" order="id asc" id="vo"}

{$vo.title}{/cc:articles}

很方便吧,整了两个小时,才写好,特此记录一下,希望也能帮助到需要的朋友们!

最近在看flutter,搞了一个flutter中文社区,欢迎您来看看http://www.fluttercn.com

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值