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中将时间差转换为字符串提示的实现代码
Aug 08 PHP
解析百度搜索结果link?url=参数分析 (全)
Oct 09 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
Mar 08 PHP
php使用百度天气接口示例
Apr 22 PHP
php使用Cookie实现和用户会话的方法
Jan 21 PHP
php实现ip白名单黑名单功能
Mar 12 PHP
PHP判断是否连接上网络的方法
Jul 01 PHP
PHP简单实现生成txt文件到指定目录的方法
Apr 25 PHP
PHP模糊查询的实现方法(推荐)
Sep 06 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
Dec 05 PHP
浅谈PHP的反射机制
Dec 15 PHP
PHP中rename()函数的妙用讲解
Feb 28 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实现根据时间戳获取周几的方法
2016/02/26 PHP
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
js导出txt示例代码
2014/01/14 Javascript
使用nodejs开发cli项目实例
2015/06/03 NodeJs
《JavaScript函数式编程》读后感
2015/08/07 Javascript
JS模拟并美化的表单控件完整实例
2015/08/19 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
将angular-ui的分页组件封装成指令的方法详解
2017/05/10 Javascript
JS解决IOS中拍照图片预览旋转90度BUG的问题
2017/09/13 Javascript
Vue微信项目按需授权登录策略实践思路详解
2018/05/07 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
vue+elementUI 实现内容区域高度自适应的示例
2020/09/26 Javascript
[01:47]2018年度DOTA2最具人气解说-完美盛典
2018/12/16 DOTA
详解python如何调用C/C++底层库与互相传值
2016/08/10 Python
Python学习小技巧之列表项的拼接
2017/05/20 Python
对python程序内存泄漏调试的记录
2018/06/11 Python
Python实现查找字符串数组最长公共前缀示例
2019/03/27 Python
解决pyqt5中QToolButton无法使用的问题
2019/06/21 Python
使用Python轻松完成垃圾分类(基于图像识别)
2019/07/09 Python
使用python打印十行杨辉三角过程详解
2019/07/10 Python
Python 列表去重去除空字符的例子
2019/07/20 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
推荐WEB开发者最佳HTML5和CSS3代码生成器
2015/11/24 HTML / CSS
澳大利亚领先的在线礼品网站:Gifts Australia
2020/08/15 全球购物
电子商务个人自荐信
2013/12/12 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
2015年爱国卫生工作总结
2015/04/22 职场文书
2016年清明节寄语
2015/12/04 职场文书
同学聚会开幕词
2019/04/02 职场文书
python的netCDF4批量处理NC格式文件的操作方法
2022/03/21 Python