ThinkPHP分组下自定义标签库实例


Posted in PHP onNovember 01, 2014

本文实例讲述了ThinkPHP分组下自定义标签库的实现方法。分享给大家供大家参考。具体如下:

自定义标签库应该位于ThinkPHP\\Extend\\Driver\\TagLib目录下

1 新建标签类库文件名为TagLibBlog.class.php。

2 编辑刚才新建的类库文件,新建一个类,继承TagLib父类

import('TagLib');

class TagLibBlog extends TagLib {

}

3 在类中声明一个protected成员变量$tags
class TagLibBlog extends TagLib {

   protected $tags =array(

       'mynav'=>array('attr'=>'limit,order','close'=>1)

       /* 3water.com

       这里$tags数组内,每个单元也就是每一行代表一个标签,例如{dede:article},我们这里也定义了一个mynav,

       然后每一行标签的键名就是标签名,键值是一个数组,该数组包含两个单元,第一个就是attr,就是标签中得属性,以逗号分隔,

       如num,typeid等等,close的值如果是0的话就是非闭合标签,1的话就是闭合,意思是要以</mynav>来结尾

       */

   );

}

4 定义了标签后,我们需要实现标签的功能,这里直接在类文件下声明一个函数,以_开头,以标签名 mynav结尾的函数名
public function _mynav($attr,$content){

   $attr=$this->parseXmlAttr($attr);

   

   import('@.Class.Tool');

   $categories=M('category')->limit($attr['limit'])->order($attr['order'])->select();

   $categories=Tool::formatMultiArray($categories);

   

   $str='';

   for($i=0;$i<count($categories);$i++){

       $model=array(

           '/[field.id]/',

           '/[field.name]/'

       );

       $replace=array(

           $categories[$i]['id'],

           $categories[$i]['name']

       );

       $str.=preg_replace($model,$replace,$content);

   }

   

   return $str;

}

定义好标签后,需要在项目公用配置文件中加载标签库
config.php
//加载标签库

'APP_AUTOLOAD_PATH'=>'@.TagLib',

'TAGLIB_BUILD_IN'=>'Cx,Blog',

标签库完整源码如下:

<?php

import('TagLib');

class TagLibBlog extends TagLib {

   

   protected $tags=array(

       'mynav'=>array('attr'=>'limit,order','close'=>1)

   );

   

   public function _mynav($attr,$content){

       $attr=$this->parseXmlAttr($attr);

       

       import('@.Class.Tool');

       $categories=M('category')->limit($attr['limit'])->order($attr['order'])->select();

       $categories=Tool::formatMultiArray($categories);

       

       $str='';

       for($i=0;$i<count($categories);$i++){

           $model=array(

               '/[field.id]/',

               '/[field.name]/'

           );

           $replace=array(

               $categories[$i]['id'],

               $categories[$i]['name']

           );

           $str.=preg_replace($model,$replace,$content);

       }

       

       return $str;

   }

   

}

?>

模板中测试:
<mynav limit="0,10" order="sort asc">

   <a href="[field.id]">[field.name]</a><br/>

</mynav>

希望本文所述对大家的ThinkPHP框架程序设计有所帮助。

PHP 相关文章推荐
php读取mysql乱码,用set names XXX解决的原理分享
Dec 29 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
Jun 17 PHP
php函数指定默认值方法的小例子
Dec 04 PHP
PHP小教程之实现链表
Jun 09 PHP
phpstorm配置Xdebug进行调试PHP教程
Dec 01 PHP
php创建session的方法实例详解
Jan 27 PHP
PHP中把数据库查询结果输出为json格式简单实例
Apr 09 PHP
PHP处理postfix邮件内容的方法
Jun 16 PHP
CI(Codeigniter)的Setting增强配置类实例
Jan 06 PHP
浅析Laravel5中队列的配置及使用
Aug 04 PHP
Mac下php 5升级到php 7的步骤详解
Apr 26 PHP
使用PHP反射机制来构造&quot;CREATE TABLE&quot;的sql语句
Mar 21 PHP
PHP根据两点间的经纬度计算距离
Oct 31 #PHP
ThinkPHP在新浪SAE平台的部署实例
Oct 31 #PHP
封装ThinkPHP的一个文件上传方法实例
Oct 31 #PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
Oct 31 #PHP
ThinkPHP控制器间实现相互调用的方法
Oct 31 #PHP
ThinkPHP上使用多说评论插件的方法
Oct 31 #PHP
让ThinkPHP支持大小写url地址访问的方法
Oct 31 #PHP
You might like
解析php中如何调用用户自定义函数
2013/08/06 PHP
php获取域名的google收录示例
2014/03/24 PHP
PHP封装的验证码工具类定义与用法示例
2018/08/22 PHP
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
2010/03/16 Javascript
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
2014/05/07 Javascript
JS按回车键实现登录的方法
2014/08/25 Javascript
javascript+HTML5自定义元素播放焦点图动画
2016/02/21 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
2016/03/25 Javascript
jquery UI Datepicker时间控件冲突问题解决
2016/12/16 Javascript
Jqprint实现页面打印
2017/01/06 Javascript
angular4自定义组件详解
2017/09/28 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
[56:00]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第一局
2016/03/05 DOTA
[01:11:11]Alliance vs RNG 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
python进阶教程之循环相关函数range、enumerate、zip
2014/08/30 Python
编写Python的web框架中的Model的教程
2015/04/29 Python
Python解析树及树的遍历
2016/02/03 Python
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
matplotlib简介,安装和简单实例代码
2017/12/26 Python
程序员写Python时的5个坏习惯,你有几条?
2018/11/26 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
应届生简历中的自我评价
2014/01/13 职场文书
网络技术专业求职信
2014/05/02 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
文案策划专业自荐信
2014/07/07 职场文书
致短跑运动员加油稿
2015/07/21 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书
团组织关系介绍信
2019/06/24 职场文书
MySQL对数据表已有表进行分区表的实现
2021/11/01 MySQL
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python
windows系统搭建WEB服务器详细教程
2022/08/05 Servers