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 相关文章推荐
php4的彩蛋
Oct 09 PHP
php preg_match_all结合str_replace替换内容中所有img
Oct 11 PHP
php中批量修改文件后缀名的函数代码
Oct 23 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
Apr 19 PHP
使用php测试硬盘写入速度示例
Jan 27 PHP
ThinkPHP分组下自定义标签库实例
Nov 01 PHP
PHP连接SQLServer2005的方法
Jan 27 PHP
PHP答题类应用接口实例
Feb 09 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
Mar 16 PHP
AES加解密在php接口请求过程中的应用示例
Oct 26 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
Oct 10 PHP
PHP实现的微信公众号扫码模拟登录功能示例
May 30 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
星际RPG字典
2020/03/04 星际争霸
用PHP实现浏览器点击下载TXT文档的方法详解
2013/06/02 PHP
php检测用户是否用手机(Mobile)访问网站的类
2014/01/09 PHP
Laravel 5.5 实现禁用用户注册示例
2019/10/24 PHP
js+JQuery返回顶部功能如何实现
2012/12/03 Javascript
JS正则验证邮箱的格式详细介绍
2013/11/19 Javascript
Javascript数组与字典用法分析
2014/12/13 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
原生js实现放大镜效果
2017/01/11 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
详解Vue源码之数据的代理访问
2018/12/11 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
2019/01/21 Javascript
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
微信小程序换肤功能实现代码(思路详解)
2020/08/25 Javascript
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python3+selenium自动化测试框架详解
2019/03/17 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
Python获取统计自己的qq群成员信息的方法
2019/11/15 Python
手动安装python3.6的操作过程详解
2020/01/13 Python
Python unittest工作原理和使用过程解析
2020/02/24 Python
python实现126邮箱发送邮件
2020/05/20 Python
解决pycharm修改代码后第一次运行不生效的问题
2021/02/06 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
Delphi工程师笔试题
2013/09/21 面试题
市场营销专科应届生求职信
2013/11/24 职场文书
美术专业个人自我评价
2014/01/18 职场文书
竞选班长的演讲稿
2014/04/24 职场文书
一个独生女的故事观后感
2015/06/04 职场文书
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js