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.ini中文版(1)
Oct 09 PHP
ThinkPHP自动验证失败的解决方法
Jun 09 PHP
PHP的explode和implode的使用说明
Jul 17 PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
Oct 04 PHP
PHP中使用localhost连接Mysql不成功的解决方法
Aug 20 PHP
PHP设计模式之装饰者模式代码实例
May 11 PHP
详解PHP错误日志的获取方法
Jul 20 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
Apr 07 PHP
php修改数组键名的方法示例
Apr 15 PHP
使用XHProf查找PHP性能瓶颈的实例
Dec 13 PHP
PHP常用函数之根据生日计算年龄功能示例
Oct 21 PHP
Laravel框架之解决前端显示图片问题
Oct 24 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
加速XP搜索功能堪比vista
2007/03/22 PHP
php时间不正确的解决方法
2008/04/09 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
php将时间差转换为字符串提示
2011/09/07 PHP
分享下PHP register_globals 值为on与off的理解
2013/09/26 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
2015/03/25 PHP
php如何获取Http请求
2020/04/30 PHP
基于jquery的商品展示放大镜
2010/08/07 Javascript
js转义字符介绍
2013/11/05 Javascript
使用JavaScript 编写简单计算器
2014/11/24 Javascript
js获取时间并实现字符串和时间戳之间的转换
2015/01/05 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
Sequelize中用group by进行分组聚合查询
2016/12/12 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
2016/12/15 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
vue 文件目录结构详解
2017/11/24 Javascript
Vue按需加载的具体实现
2017/12/02 Javascript
angular4 获取wifi列表中文显示乱码问题的解决
2018/10/20 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
简述:我为什么选择Python而不是Matlab和R语言
2017/11/14 Python
Python2.7+pytesser实现简单验证码的识别方法
2017/12/29 Python
python tkinter图形界面代码统计工具
2019/09/18 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
2020/02/14 Python
检测浏览器是否支持html5视频的代码
2013/03/28 HTML / CSS
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
精通CAD能手自荐书
2014/01/31 职场文书
群众路线对照检查材料
2014/09/22 职场文书
2014年仓管员工作总结
2014/11/18 职场文书
2014年校务公开工作总结
2014/12/18 职场文书
2015大学生求职信范文
2015/03/20 职场文书
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android