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也可以?成Shell Script
Oct 09 PHP
层叠菜单的动态生成
Oct 09 PHP
用PHP和ACCESS写聊天室(六)
Oct 09 PHP
apache php模块整合操作指南
Nov 16 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
Jul 25 PHP
从wamp到xampp的升级之路
Apr 08 PHP
PHP开发制作一个简单的活动日程表Calendar
Jun 20 PHP
微信小程序 消息推送php服务器验证实例详解
Mar 30 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
Apr 10 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
Oct 13 PHP
PHP getName()函数讲解
Feb 03 PHP
PHP实现本地图片转base64格式并上传
May 29 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数组中删除元素之重新索引的方法
2014/09/16 PHP
php多次include后导致全局变量global失效的解决方法
2015/02/28 PHP
php+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
PHP实现正则表达式分组捕获操作示例
2018/02/03 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
javascript 面向对象思想 附源码
2009/07/07 Javascript
javascript 强制刷新页面的实现代码
2009/12/13 Javascript
jquery随机展示头像代码
2011/12/21 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
2013/11/05 Javascript
jquery-syntax动态语法着色示例代码
2014/05/14 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
2015/04/20 Javascript
Jquery使用css方法改变样式实例
2015/05/18 Javascript
移动Web中图片自适应的两种JavaScript解决方法
2015/06/18 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
如何使用jquery修改css中带有!important的样式属性
2016/04/28 Javascript
jQuery实现的简单悬浮层功能完整实例
2017/01/23 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
jQuery-Citys省市区三级菜单联动插件使用详解
2019/07/26 jQuery
[45:15]Optic vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
使用Python对SQLite数据库操作
2017/04/06 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
python正则实现提取电话功能
2018/02/24 Python
django+xadmin+djcelery实现后台管理定时任务
2018/08/14 Python
python读取和保存图片5种方法对比
2018/09/12 Python
Python中按值来获取指定的键
2019/03/04 Python
将pip源更换到国内镜像的详细步骤
2019/04/07 Python
python中count函数简单的实例讲解
2020/02/06 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
JD Sports意大利:英国篮球和运动时尚的领导者
2017/10/29 全球购物
印度在线购物网站:Paytmmall
2019/07/24 全球购物
PHP开发的一般流程
2013/08/13 面试题
学生出入校管理制度
2014/01/16 职场文书
基层党员对照检查材料
2014/09/24 职场文书
清明节主题班会
2015/08/14 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书