ThinkPHP标签制作教程


Posted in PHP onJuly 10, 2014

本文以实例讲解了ThinkPHP标签的制作方法,对于ThinkPHP的初学者或者开发人员都有一定的借鉴价值。

一般来说,ThinkPHP的默认标签解析器在Lib/Template/TagLib/TagLibCx.class(2.1版本位于ThinkPHP/Lib/Think/Template/TagLib/TagLibCx.class.php)中,里面定义了常用的如volist php 等常用ThinkPHP的标签

这里我们就在这个类中添加一个<category>的标签解析。
 
一、标签格式:

<category parentid='0' ><{$cat.catname}></category>

二、标签作用:

循环输出父类id是parentid的栏目

三、操作步骤:

1.在tagLibCx.class 的私有属性中添加:

'category'=array('attr'=>'parentid',level=>3)

其中attr:标签的属性 level标签的嵌套层次
 
2.添加解析函数

标签的解析原理就是通过读取xml文件得到相应的信息,然后再拼凑成所需要的php源代码,最后通过echo 在页面上输出。

具体代码如下:

public function _category($attr,$content)
{
//把标签的所有属性解析到$tag数组里面
$tag = $this->parseXmlAttr($attr,'category');
//得到标签里面的属性
$parentid= $tag['parentid'];
//定义页面解析的变量
$result = !empty($tag['result'])?$tag['result']:'cat'; //定义数据查询的结果存放变量
$key = !empty($tag['key'])?$tag['key']:'i';
$mod = isset($tag['mod'])?$tag['mod']:'2';
//拼凑数据库查询语句 这里直接用了CategoryModel封装好的函数
$sql = "D('Category')->";
$sql .= "getCategorys(".$parentid.')';
//拼凑输出字符
$parsestr = '<?php $_result='.$sql.'; if ($_result): $'.$key.'=0;';
$parsestr .= 'foreach($_result as $key=>$'.$result.'):';
$parsestr .= '++$'.$key.';$mod = ($'.$key.' % '.$mod.' );?>';
$parsestr .= $content;//解析在category标签中的内容
$parsestr .= '<?php endforeach; endif;?>';
return $parsestr;
}

CategoryModel中的getCategorys方法:

/*
* 根据parentid得到栏目信息
* $parentid 父id
* $withSelf 是否包含自己
*/
public function getCategorys($parentid,$withSelf=0)
{
$parentid=intval($parentid);
$categorys=$this->where(array('parentid'=>$parentid,'ismenu'=>1))->order('listorder ASC')->select();
//包含自己
if($withSelf)
{
$categorys2=$this->where(array('id'=>$parentid,'ismenu'=>1))->limit(1)->select();
$category=array_merge($categorys,$categorys2);
}
return $categorys;
}

3.页面上的引用:

<category parentid='0'>
<{$cat.catname}>
</category>

这样一个标签就做好了!!就可以甩掉那个volist在页面上动态输出我们想要的东西了!

PHP 相关文章推荐
综合图片计数器
Oct 09 PHP
如何在PHP中使用Oracle数据库(5)
Oct 09 PHP
PHP通过正则表达式下载图片到本地的实现代码
Sep 19 PHP
PHP 日,周,月点击排行统计
Jan 11 PHP
解析PHP实现多进程并行执行脚本
Jun 18 PHP
Yii使用CLinkPager分页实例详解
Jul 23 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
Jan 04 PHP
php上传文件并存储到mysql数据库的方法
Mar 16 PHP
php实现网页缓存的工具类分享
Jul 14 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
Oct 20 PHP
深入解析PHP中foreach语句控制数组循环的用法
Nov 30 PHP
php使用正则表达式去掉html中的注释方法
Nov 03 PHP
YII路径的用法总结
Jul 09 #PHP
YII实现分页的方法
Jul 09 #PHP
YII模块实现绑定二级域名的方法
Jul 09 #PHP
yii操作cookie实例简介
Jul 09 #PHP
Yii调试SQL的常用方法
Jul 09 #PHP
php判断GIF图片是否为动画的方法
Sep 04 #PHP
ThinkPHP3.2.2的插件控制器功能简述
Jul 09 #PHP
You might like
比较全的PHP 会话(session 时间设定)使用入门代码
2008/06/05 PHP
php下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
php记录代码执行时间(实现代码)
2013/07/05 PHP
PHP中基本HTTP认证技巧分析
2015/03/16 PHP
Yii中Model(模型)的创建及使用方法
2015/12/28 PHP
Smarty环境配置与使用入门教程
2016/05/11 PHP
用户注册常用javascript代码
2009/08/29 Javascript
jsvascript图像处理—(计算机视觉应用)图像金字塔
2013/01/15 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
JavaScript中判断整数的多种方法总结
2014/11/08 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
2016/10/21 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
jQuery实现鼠标经过显示动画边框特效
2017/03/24 jQuery
node.js 中间件express-session使用详解
2017/05/20 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
2019/09/27 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
使用python对文件中的单词进行提取的方法示例
2018/12/21 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
2020/06/28 Python
HTML5新增加标签和功能概述
2016/09/05 HTML / CSS
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
求职信范文英文版
2014/01/05 职场文书
承认错误的检讨书
2014/01/30 职场文书
培训专员岗位职责
2014/02/26 职场文书
趣味运动会策划方案
2014/06/02 职场文书
大学生旷课检讨书1000字
2015/02/19 职场文书
PyMongo 查询数据的实现
2021/06/28 Python
教你win10系统中APPCRASH事件问题解决方法
2022/07/15 数码科技
Python如何将list中的string转换为int
2022/07/15 Ruby