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的宝库目录--PEAR
Oct 09 PHP
PHP 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
Oct 09 PHP
php存储过程调用实例代码
Feb 03 PHP
php fsockopen解决办法 php实现多线程
Jan 20 PHP
php中异常处理方法小结
Jan 09 PHP
PHP使用array_fill定义多维数组的方法
Mar 18 PHP
PHP异常处理浅析
May 12 PHP
fckeditor上传文件按日期存放及重命名方法
May 22 PHP
Symfony2实现从数据库获取数据的方法小结
Mar 18 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
May 04 PHP
php传值和传引用的区别点总结
Nov 19 PHP
PHP dirname(__FILE__)原理及用法解析
Oct 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中的unset究竟会不会释放内存
2013/07/18 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
PHP删除数组中特定元素的两种方法
2019/02/28 PHP
Laravel 实现添加多语言提示信息
2019/10/25 PHP
建立良好体验度的Web注册系统ajax
2007/07/09 Javascript
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
javascript动态添加、修改、删除对象的属性与方法详解
2014/01/27 Javascript
js中string转int把String类型转化成int类型
2014/08/13 Javascript
Eclipse配置Javascript开发环境图文教程
2015/01/29 Javascript
jQuery Validate表单验证深入学习
2015/12/18 Javascript
jQuery中的deferred使用方法
2017/03/27 jQuery
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
vue-cli3+typescript初体验小结
2019/02/28 Javascript
python爬虫headers设置后无效的解决方法
2017/10/21 Python
Python异常对代码运行性能的影响实例解析
2018/02/08 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
2019/08/12 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
Python 使用office365邮箱的示例
2020/10/29 Python
J.Crew官网:美国知名休闲服装品牌
2017/05/19 全球购物
纽约香氛品牌:NEST Fragrance
2018/10/15 全球购物
会计学自我鉴定
2014/02/06 职场文书
大学生作弊检讨书
2014/02/19 职场文书
行政人事经理职位说明书
2014/03/05 职场文书
农村婚庆司仪主持词
2014/03/15 职场文书
读书活动总结范文
2014/04/26 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
个人主要事迹材料
2014/08/26 职场文书
三好生演讲稿
2014/09/12 职场文书
2014年超市工作总结
2014/11/19 职场文书
2014年村党支部工作总结
2014/12/04 职场文书
建国大业电影观后感
2015/06/01 职场文书
在pyCharm中下载第三方库的方法
2021/04/18 Python
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS