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

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

php taglib.php,thinkphp5 taglib自定义标签教程相关推荐

  1. JAVA自定义标签教程及实例代码

    自定义标签主要用于移除Jsp页面中的java代码 快速入门:使用自定义标签输出客户机的IP 移除jsp页面中的java代码,只需要完成两个步骤: 编写一个实现Tag接口的Java类,并覆盖doStar ...

  2. [JSP]自定义标签库taglib

    自定义标签的步骤 自定义标签的步骤大概有三步: 1.继承javax.servlet.jsp.tagext.*下提供的几个标签类,如Tag.TagSupport.BodyTagSupport.Simpl ...

  3. Thinkphp5自定义标签

    Thinkphp5自定义标签: 一.自定义标签的方法名称: 形如:标签名称为jquery 则它对应的标签实现函数为 tagJquery() (注意tag为前缀然后使用驼峰式写法) 一.步骤: 1).创 ...

  4. [转]EL函数、自定义EL函数、自定义标签

    EL函数 1.EL函数的作用:操作字符串 2.在JSP页面中要引入EL函数库 <%@ taglib prefix="fn" uri="http://java.sun ...

  5. taglib.class.php,thinkphp5 taglib标签库自定义

    taglib自定义标签不起作用,原来是需要在 config/template.php预加载自定义模板标签 // 预加载自定义模板标签 'taglib_pre_load' => 'app\comm ...

  6. php taglib.php,thinkphp5 taglib_pre_load预加载自定义标签库

    文章内容来自官方手册,需要查看详细的可以访问来源网址. 模板中加载标签库,预加载自定义标签库,扩展内置标签库的加载 下面以标签库放在common作为一个示例: namespace app\common ...

  7. jsp自定义标签(taglib)编写的原理和实现

    jsp自定义标签(taglib)编写的原理和实现 转:http://www.javaeye.com/topic/157737 个tag就是一个普通的java类,它惟一特别之处是它必须继承TagSupp ...

  8. Java第四十八天,Jsp之Taglib,自定义标签详解

    理论知识 一.标签的本质是什么 自定义标签实际上是一个实现了特定接口的Java类,它封装了一些常用功能,在运行时被相应的代码所替换:它与 JavaBean 的最大区别就是 JavaBean 没有默认的 ...

  9. java 自定义taglib_[JSP]自定义标签库taglib

    自定义标签的步骤大概有三步: 1.继承javax.servlet.jsp.tagext.*下提供的几个标签类,如Tag.TagSupport.BodyTagSupport.SimpleTagSuppo ...

最新文章

  1. 漏洞分析技术专家聚会——博文视点OpenParty第二期
  2. 文巾解题 6. Z 字形变换
  3. qt messagebox退出程序_[Qt] Mac平台安装最新版qt的方法(源码编译) - 刘傲天
  4. 前端可视化编程:liveReload安装,sublime 3
  5. Pandas之:Pandas简洁教程
  6. 昨天日志 今天日志的获取方法
  7. 带哨兵节点的链_HBA公链 | IPFS:区块链“不可能三角”的可能解
  8. idea代码样式模板_阿里p3c(代码规范,eclipse插件、模版,idea插件)
  9. Android已读未读功能,Android实现小圆点显示未读功能
  10. arp协议属于哪一层_ARP的攻击与防御
  11. struts2 result随笔
  12. 老男孩Linux运维第41期20170827开班第一周学习重点记录
  13. 安卓相机如何设置对焦模式
  14. Firemonkey
  15. rds的连接数_阿里云数据库RDS配置详解规格代码最大连接数IOPS
  16. 设计模式六大原则详解
  17. 【RTD】铂电阻测温原理与具体方法
  18. 在墨刀中使用思维导图
  19. android 清除通知栏,android startForeground去除通知栏
  20. Emacs Lisp语言

热门文章

  1. 《思维导图应用实战》画出你的思维
  2. 基于javaweb的超市进销存系统设计和实现(java+Springboot+ssm+mysql+jsp+maven)
  3. 【减肥日记】220斤大体重,10个月减重54.6斤(持续更新)
  4. STC51单片机学习笔记8——stc12c56 串口显示AD(多路ad)
  5. [RISC-V MCU 应用开发]基于CH32V307和TtencentOS Tiny的物联网心率监测
  6. LeaRun.net代码生成器 一键生成前后端代码
  7. Kubernetes网络技术解析之Pod基于路由模式的通信实现
  8. 【马红“名师+”】送教互研共提升 有效课堂我先行(送教送培第二站)
  9. mhd格式三维图像显示_关于医疗影像的mhd和dcm格式图像的读取和坐标转换
  10. 小狈.搜集的一些photoshop 教程.软件.下载方法及相关网站 ps软件下载官方网站