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之变量、常量学习笔记
Mar 27 PHP
PHP 身份证号验证函数
May 07 PHP
php set_magic_quotes_runtime() 函数过时解决方法
Jul 08 PHP
PHP的可变变量名的使用方法分享
Feb 05 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
Jan 06 PHP
自编函数解决pathinfo()函数处理中文问题
Nov 03 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
Nov 29 PHP
php网页病毒清除类
Dec 08 PHP
php中ob_flush函数和flush函数用法分析
Mar 18 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
May 25 PHP
PHP 实现手机端APP支付宝支付功能
Jun 07 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
Oct 11 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
在PHP3中实现SESSION的功能(一)
2006/10/09 PHP
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
php中的单引号、双引号和转义字符详解
2017/02/16 PHP
Javascript 布尔型分析
2008/12/22 Javascript
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
Javascript 面向对象(三)接口代码
2012/05/23 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
JavaScript判断对象是否为数组
2015/12/22 Javascript
ajax请求+vue.js渲染+页面加载的示例
2018/02/11 Javascript
微信小程序倒计时功能实例代码
2018/07/17 Javascript
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
Vue修改项目启动端口号方法
2019/11/07 Javascript
python输出指定月份日历的方法
2015/04/23 Python
详解python中字典的循环遍历的两种方式
2017/02/07 Python
Python 使用PIL numpy 实现拼接图片的示例
2018/05/08 Python
python 查找文件名包含指定字符串的方法
2018/06/05 Python
详解Python3.6的py文件打包生成exe
2018/07/13 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
python plotly画柱状图代码实例
2019/12/13 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
2020/03/03 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
2020/03/18 Python
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
杭州联环马网络笔试题面试题
2013/08/04 面试题
《鹬蚌相争》教学反思
2014/04/22 职场文书
社区护士演讲稿
2014/08/27 职场文书
现实表现材料范文
2014/12/23 职场文书
幼儿园教师工作总结2015
2015/04/02 职场文书
故意伤害辩护词
2015/05/21 职场文书
教师网络培训心得体会
2016/01/09 职场文书
自荐信大全
2019/03/21 职场文书
2019运动会广播加油稿汇总
2019/08/21 职场文书
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
2021/06/11 Python
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
2021/08/23 MySQL