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 相关文章推荐
实用函数7
Nov 08 PHP
php 获取一个月第一天与最后一天的代码
May 16 PHP
php数组(array)输出的三种形式详解
Jun 05 PHP
php连接Access数据库错误及解决方法
Jun 20 PHP
解析php mysql 事务处理回滚操作(附实例)
Aug 05 PHP
php上传图片客户端和服务器端实现方法
Mar 30 PHP
浅析PHP中Session可能会引起并发问题
Jul 23 PHP
php实现json编码的方法
Jul 30 PHP
PHP自定义函数格式化json数据示例
Sep 14 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
May 20 PHP
Thinkphp 3.2框架使用Redis的方法详解
Oct 24 PHP
Laravel6.18.19如何优雅的切换发件账户
Jun 14 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
手把手教你使用DedeCms的采集的图文教程
2007/03/11 PHP
php操作excel文件 基于phpexcel
2010/07/02 PHP
PHP如何利用P3P实现跨域
2013/08/24 PHP
php中数字、字符与对象判断函数用法实例
2014/11/26 PHP
php绘制圆形的方法
2015/01/24 PHP
PHP实现事件机制实例分析
2015/06/26 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
php使用curl伪造浏览器访问操作示例
2019/09/30 PHP
jquery 表单下所有元素的隐藏
2009/07/25 Javascript
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
javascript的事件触发器介绍的实现
2014/06/05 Javascript
JavaScript中伪协议 javascript:使用探讨
2014/07/18 Javascript
jquery手风琴特效插件
2015/02/04 Javascript
iscroll实现下拉刷新功能
2017/07/18 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
Vue利用History记录上一页面的数据方法实例
2018/11/02 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
Python获取任意xml节点值的方法
2015/05/05 Python
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
2015/05/06 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
Pytorch实现GoogLeNet的方法
2019/08/18 Python
Python scipy的二维图像卷积运算与图像模糊处理操作示例
2019/09/06 Python
详解Python高阶函数
2020/08/15 Python
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
JMS中Topic和Queue有什么区别
2013/05/15 面试题
党员志愿者活动方案
2014/08/28 职场文书
创卫工作总结2015
2015/04/22 职场文书
寒假致家长的一封信
2015/10/10 职场文书
sass 常用备忘案例详解
2021/09/15 HTML / CSS
SQL SERVER触发器详解
2022/02/24 SQL Server
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers