ThinkPHP的标签制作实例讲解

admin3年前PHP教程99

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的标签制作内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

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

相关文章

哪些行业会租用美国大带宽服务器

哪些行业会租用美国大带宽服务器?许多行业会租用美国大带宽服务器以满足其需求,以下是一些常见的行业:网站托管和开发:许多网站宣传和运营需要大带宽服务器,例如高流量的电子商务平台、社交媒体、博客网站等。游...

法国服务器租用靠谱吗

法国服务器租用靠谱吗?租用法国服务器与众多其他国家的服务器一样,其靠谱程度主要取决于服务器租赁商的服务质量、技术实力以及数据中心的安全性和稳定性等因素。一般来说,如选择正规的、资质齐备的服务器租赁商和...

详解PHP7开启OPcache和Swoole性能的提升对比

目录前期准备不开启opcache和laravel开启OPcache使用swoole加速包总结前期准备测试所用的主机为虚拟机,虚拟机配置在双核4GB的个人电脑中。虚拟机系统为linux,http服务器采...

TikTok美国跨境电商直播新机遇从直播快开始

回顾过往三年,经历了疫情反复、高通胀等重重困难,但挑战与机遇相伴,新兴的市场趋势和发展机遇同样破水而出。拼多多等电商巨头也进军海外市场,TikTok领衔的跨境直播电商正强势崛起。开启美国跨境电商机遇:...

Laravel统一封装接口返回状态实例讲解

前后端分离,接口返回封装方便你我他(方便前后端合作开发)在Laravel中可以在公共继承的Controller.php写方法进行调用返回app/Http/Controllers/Controller....

php回溯算法计算组合总和的实例代码

给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说...