ThinkPHP的标签制作实例讲解

admin3年前PHP教程32

thinkphp的默认标签解析器在Lib/Template/TagLib/TagLibCx.class中

里面定义了常用的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在页面上动态输出我们想要的东西了

到此这篇关于ThinkPHP的标签制作实例讲解的文章就介绍到这了,更多相关ThinkPHP的标签制作内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

php缓存的类型总结及用法

一个网站或者一个应用的标准流程是浏览器向应用服务器发出请求,应用服务器做一些计算和逻辑判断之后再请求数据库,数据库收到请求后在经过计算将数据返回给应用服务器,应用服务器再次计算后把数据返回给浏览器那么...

php如何用PDO操作大数据对象

目录什么是大数据对象直接操作大数据对象会怎么样?正确的姿势总结什么是大数据对象“大”通常意味着“大约 4kb 或以上”,尽管某些数据库在数据达到&ldq...

python编程(新手怎么学代码编程)

python编程跟着互联网的迅速发展,新技术不断创新,万物互联的时代,企业对IT人员的需求不断增加,许多想要进入IT行业的小伙伴经常会诉苦,想入门,却不知道从哪下手。最近就有不少小伙伴和小编诉苦:“我...

PHP队列场景以及实现代码实例详解

为了降低单点压力,通常会根据业务情况进行分表分库,将表分布在不同的库中(库可能分布在不同的机器上),但是一个业务场景可能会同时处理两个表的操作。在这种场景下,事务的提交会变得相对复杂,因为多个节点(库...

GPU显卡服务器从哪几方面来选择呢香港显卡服务器租用地址是多少

显卡服务器(GPUCloudComputing,简称GPU)是基于GPU应用的计算服务,具有实时高速的并行计算和浮点计算能力,一般适用于3D图形应用程序、视频解码、深度学习、科学计算等应用场景。用途是...

显卡服务器有什么用租用美国显卡服务器如何选择

显卡服务器实际上是配备独立显卡的物理服务器。用户可以通过远程桌面运行自己的程序和一些具有独立显卡需求的应用程序需求。为什么普通服务器没有显卡?由于许多服务器用于运行网站或作为应用程序的服务器,这些应用...