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禁止页面缓存的代码
Oct 23 PHP
PHP 多维数组的排序问题 根据二维数组中某个项排序
Nov 09 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
Sep 28 PHP
php配置php-fpm启动参数及配置详解
Nov 04 PHP
限制ckeditor上传图片文件大小的方法
Nov 15 PHP
easyui的tabs update正确用法分享
Mar 21 PHP
PHP中mysqli_affected_rows作用行数返回值分析
Dec 26 PHP
PHP生成随机数的方法实例分析
Jan 22 PHP
PHP用户验证和标签推荐的简单使用
Oct 31 PHP
PHP实现的方程求解示例分析
Nov 11 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
Mar 12 PHP
ThinkPHP5和ThinkPHP6的区别
Mar 31 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
收音机另类DIY - 纸巾盒做外壳
2021/03/02 无线电
PHP+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
php中截取中文字符串的代码小结
2011/07/17 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
2013/08/15 PHP
php解析非标准json、非规范json的方式实例
2020/12/10 PHP
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
学习JavaScript设计模式(多态)
2015/11/25 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
AngularJS ng-bind-template 指令详解
2016/07/30 Javascript
小程序开发基础之view视图容器
2018/08/21 Javascript
vue回到顶部监听滚动事件详解
2019/08/02 Javascript
微信小程序实现点击空白隐藏的方法示例
2019/08/13 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
2019/09/17 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
2019/09/28 Javascript
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
Pandas DataFrame中的tuple元素遍历的实现
2019/10/23 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
PyQt5 文本输入框自动补全QLineEdit的实现示例
2020/05/13 Python
Python利用matplotlib绘制散点图的新手教程
2020/11/05 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
2021/03/03 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
Sperry澳大利亚官网:源自美国帆船鞋创始品牌
2019/07/29 全球购物
俄罗斯女装店:12storeez
2019/10/25 全球购物
光电信息专业应届生求职信
2013/10/07 职场文书
毕业生个人投资创业计划书
2014/01/04 职场文书
交通安全横幅标语
2014/10/07 职场文书
2019毕业论文致谢词
2019/06/24 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python