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 相关文章推荐
搜索和替换文件或目录的一个好类--很实用
Oct 09 PHP
php下几个常用的去空、分组、调试数组函数
Feb 22 PHP
apache2.2.4+mysql5.0.77+php5.2.8安装精简
Apr 29 PHP
php中防止恶意刷新页面的代码小结
Oct 31 PHP
php cli 小技巧
Jun 03 PHP
使用PHP实现蜘蛛访问日志统计
Jul 05 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
Nov 13 PHP
php根据年月获取季度的方法
Mar 31 PHP
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
Nov 19 PHP
Yii框架关联查询with用法分析
Dec 02 PHP
PHP连续签到功能实现方法详解
Dec 04 PHP
Laravel5.1 框架响应基本用法实例分析
Jan 04 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中创建并处理图象
2006/10/09 PHP
使用adodb lite解决问题
2006/12/31 PHP
php下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
php数据入库前清理 注意php intval与mysql的int取值范围不同
2010/12/12 PHP
PHP代码实现爬虫记录――超管用
2015/07/31 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
根据地区不同显示时间的javascript代码
2007/08/13 Javascript
JavaScript 全面解析各种浏览器网页中的JS 执行顺序
2009/02/17 Javascript
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
jQuery 选择符详细介绍及整理
2016/12/02 Javascript
理解 JavaScript EventEmitter
2018/03/29 Javascript
JS实现的检验身份证格式并输出出生日期,年龄,性别,出生地示例
2019/05/17 Javascript
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
一篇超完整的Vue新手入门指导教程
2020/11/18 Vue.js
分享Python字符串关键点
2015/12/13 Python
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
python 寻找list中最大元素对应的索引方法
2018/06/28 Python
python 正确保留多位小数的实例
2018/07/16 Python
使用python制作一个解压缩软件
2019/11/13 Python
python对文件的操作方法汇总
2020/02/28 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
Html5大文件断点续传实现方法
2015/12/05 HTML / CSS
英国最红的高街时尚品牌:Topshop
2016/08/05 全球购物
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
教师个人发展总结
2015/02/11 职场文书
2015年班主任个人工作总结
2015/03/31 职场文书
走近毛泽东观后感
2015/06/04 职场文书
篮球拉拉队口号
2015/12/25 职场文书
详解运行Python的神器Jupyter Notebook
2021/06/03 Python
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL
科学家测试在太空中培育人造肉,用于未来太空旅行
2022/04/29 数码科技