thinkphp中标签制作实现教程

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>

时间: 2024-09-20 06:11:08

thinkphp中标签制作实现教程的相关文章

PPT中简单制作正方体教程

  PPT中简单制作正方体教程         步骤 [插入立方体] 打开我们Word或PowerPoint 中随意一款软件,在"插入"菜单里点"形状"选项卡下拉箭头,找到并选择基本形状里头的[立方体],点击它就算插入. [无填充颜色] 将立方体插入到合适位置,为了保证不变形,我们就一边按"Shift"键一边拖动鼠标调整立方体的大小,插入完成发现有颜色.点下立方体打开"绘图工具-格式"菜单,在形状填充里选择[无填充颜色],去除

ThinkPHP中ajax使用实例教程_php实例

本文实例讲述了ThinkPHP中使用ajax的方法,提交表单如下图所示: 点击提交,不需要刷新本页,将内容提交到数据库当中,并在本页显示提交的内容.如下图所示: 一.jquery实现方法: MessageAction.class.php页面代码如下: <?php class MessageAction extends Action{ function index(){ $this->display(); } function add(){ //ajaxReturn(数据,'提示信息',状态)

ThinkPHP标签制作教程_php实例

本文以实例讲解了ThinkPHP标签的制作方法,对于ThinkPHP的初学者或者开发人员都有一定的借鉴价值. 一般来说,ThinkPHP的默认标签解析器在Lib/Template/TagLib/TagLibCx.class(2.1版本位于ThinkPHP/Lib/Think/Template/TagLib/TagLibCx.class.php)中,里面定义了常用的如volist php 等常用ThinkPHP的标签 这里我们就在这个类中添加一个<category>的标签解析.  一.标签格式:

Thinkphp中的volist标签用法简介_php实例

通常volist标签多用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,对此可以直接使用volist标签进行输出. 在控制器中首先对模版赋值,如下例所示: $User = M('User'); $list = $User->limit(10)->select(); $this->assign('list',$list); 在模版定义如下,循环输出用户的编号和姓名: <volist name="list" id=&q

thinkPHP中volist标签用法示例_php实例

本文实例讲述了thinkPHP中volist标签用法.分享给大家供大家参考,具体如下: 属性: name(必须) 要输出的数据模板变量 id(必须) 循环变量 offset(可选) 要输出数据的offset length(可选) 输出数据的长度 key(可选) 循环的key变量,默认值为i mod(可选) 对key值取模,默认为2 empty(可选) 如果数据为空显示的字符串 通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出. $User = M('Use

thinkPHP中volist标签用法示例

本文实例讲述了thinkPHP中volist标签用法.分享给大家供大家参考,具体如下: 属性: name(必须) 要输出的数据模板变量 id(必须) 循环变量 offset(可选) 要输出数据的offset length(可选) 输出数据的长度 key(可选) 循环的key变量,默认值为i mod(可选) 对key值取模,默认为2 empty(可选) 如果数据为空显示的字符串 通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出. $User = M('Use

PhotoShop制作光盘在手中翻转GIF动画教程

教程介绍用PhotoShop制作光盘在手中翻转GIF动画教程,方法挺简单,主要是先将光盘复制几个图层,Ctrl+T一一变换大小,然后在动画面板里设置过渡就行了.         三联推荐:photoshop7.0迷你版免费下载    |  Photoshop CS5 中文免费下载  |  photoshop免费下载 喜欢的同学可以学习一下! 这素我们用到得素材 和完成的图 效果图: 首先抠图.扣成这货的样子然后我们把它移动到我们的小手上如下图 分类: PS入门教程

在PowerPoint2010中简单制作文字闪烁特效教程

  很显然,需要制作不停闪烁的动画,就得先制作出一个闪烁的动画,然后让它一直重复这个动画即可.当然,这只相当于一个方法简介,在任何版本的PowerPoint中都是行得通的,本教程就为大家介绍在PowerPoint2010中简单制作文字闪烁特效方法,感兴趣的朋友可以参考本文,希望能对大家有所帮助! 方法/步骤 1.在计算机桌面双击PowerPoint2010图标将其打开运行,在启动的PowerPoint2010演示文稿编辑软件窗口,依次点击"文件"-->"新建"

Thinkphp中volist标签mod控制一定记录的换行BUG解决方法_php实例

本文实例讲述了Thinkphp中volist标签mod控制一定记录的换行BUG解决方法.分享给大家供大家参考.具体方法如下: 一.BUG描述: 存在于thinkphp 2.0 版本 Mod属性还用于控制一定记录的换行,例如: 复制代码 代码如下: <volist name="list" id="vo" mod="5" > {$vo.name} <eq name="mod" value="4"