Thinkphp自定义标签
1.定义TagLib目录和文件 TagLibSmarTop.class.php

2.配置文件
<?php
return array(
'APP_AUTOLOAD_PATH'=>'@.TagLib', //TagLib的位置 @.表示当前文件夹下
'TAGLIB_BUILD_IN'=>'Cx,SmarTop' //Cx是thinkphp基础类库的名称必须引用否则volist等标签就无法使用,SmarTop是自己定义的标签名称
);
?>
3.定义标签
class TagLibSmarTop extends TagLib{
protected $tags = array(
//nav定义字段 attr 定义属性 close 是否是闭合
'nav' => array('attr'=>'limit,order','close'=>1),
'child' =>array('attr'=>'limit,order,typeid','close'=>1),
'navnav' =>array('attr'=>'limit,order,typeid','close'=>1),
);
/**
*定义标签
*@param $attr array 接受的属性
*@param $content string 接受的字符串
*@return $str 返回字符串
*/
public function _nav($attr,$content){
$tag = $this->parseXmlAttr($attr,$content);
$Cate = D('cate');
$result =$Cate->sortChildCate($Cate->order($tag['order'])->limit($tag['limit'])->select());
$str = '';
foreach($result as $k=>$v){
//使用str_replace()函数进行对字符串的替换
$str .=str_replace(array('[field:id]','[field:typename]'),array($result[$k]['id'],$result[$k]['name']),$content);
}
return $str;
}
/**
*定义标签 功能待开发只限于2级栏目调用
*@param $attr array 接受的属性
*@param $content string 接受的字符串
*@return $str 返回字符串
*/
public function _child($attr,$content){
$tag = $this->parseXmlAttr($attr,$content);
$Cate = D('cate');
$where = array('pid'=>empty($tag['typeid'])?0:$tag['typeid']);
$result =$Cate->where($where)->order($tag['order'])->limit($tag['limit'])->select();
$str = '';
foreach($result as $k=>$v){
//使用str_replace()函数进行对字符串的替换
$str .=str_replace(array('[field:id]','[field:name]'),array($v['id'],$v['name']),$content);
}
return $str;
}
public function _navnav($attr,$content){
$tag= $this->parseXmlAttr($attr,$content);
//使用php代码以字符串的形式返回到模板里面 要以单引号括起来
$str ='<?php ';
$str .= '$Cate = M("cate");';
$str .= '$_result = cateModel::sortChildCate($Cate->select());';
$str .='foreach($_result as $__CateNav):';
$str .='extract($__CateNav);?>'; //将数组的$.__CateNav[]去掉
$str .= $content;
$str .= '<?php endforeach?>';
return $str;
}
}
4.模板使用标签
<navnav limit ='20' order='id ASC'>
<li class='nav-lv1-li'>
<a href="" class='top-cate'>{$name}</a>
<ul>
<foreach item='value' name="child">
<li><a href="">{$value.name}</a></li>
</foreach>
</ul>
</li>
</navnav>
<nav limit ='20' order='id ASC'>
<li class='nav-lv1-li'>
<a href="" class='top-cate'>[field:typename]</a>
<ul>
<child limit ='20' order='id ASC' typeid="[field:id]">
<li><a href="">[field:name]</a></li>
</child>
</ul>
</li>
</nav>
Thinkphp自定义标签的更多相关文章
- thinkphp自定义标签库
thinkphp ~ php中 的类, 的成员变量, 本身是没有类型说明的, 那么我怎么知道它的类型呢? 或初始值呢? 通常在类定义中, 如果能给一个初始值的(对于已知简单类型的),最好给一个初始值, ...
- thinkphp 自定义标签
关于标签的个人理解是 拼凑php 字符串 通过eval()来进行,返回数据.过程应该是这样的,在模板中加入 定义标签为<mytag:list></mytag>,那么在mvc 中 ...
- ThinkPHP - 自定义标签库 - 标签驱动
ThinkPHP 官方文档:http://document.thinkphp.cn/manual_3_2/taglib_driver.html 创建一个类,继承自TagLib类: <?php / ...
- (转)ThinkPHP自定义标签
第一:在当前应用下的Conf文件夹中config.php加两个配制项: 'TAGLIB_LOAD' => true,//加载标签库打开 'APP_ ...
- (转) ThinkPHP模板自定义标签使用方法
这篇文章主要介绍了ThinkPHP模板自定义标签使用方法,需要的朋友可以参考下 转之--http://www.jb51.net/article/51584.htm 使用模板标签可以让网站前台开发 ...
- (转)ThinkPHP自定义模板标签详解
转之--http://www.thinkphp.cn/topic/6258.html 模板标签让网站前台开发更加快速和简单,这让本该由程序猿才能完成的工作,现在只要稍懂得HTM的人也能轻易做到,这也就 ...
- ThinkPHP3.2.3 自定义标签库的使用
ThinkPHP 3.2.3 手册中标签库驱动的地址是: http://www.kancloud.cn/manual/thinkphp/1859 标签库的地址是:http://www.kancloud ...
- [JSP]自定义标签库taglib
自定义标签的步骤 自定义标签的步骤大概有三步: 1.继承javax.servlet.jsp.tagext.*下提供的几个标签类,如Tag.TagSupport.BodyTagSupport.Simpl ...
- [Java] JSP笔记 - 自定义标签
自定义标签的创建步骤: 自定义标签的四大功能: 自定义标签的类结构: 在 1.0 中呢, 可以将 <body-content> 的值设置为 JSP, 2.0中则不允许在自定义标签体中出现j ...
随机推荐
- 基于区域的OSPF的MD5认证
实验要求:掌握OSPF基于区域的MD5认证 拓扑如下: 配置如下: R1enable configure terminal interface s0/0/0ip address 192.168.1.1 ...
- 原根的存在性及个数证明(Primitive Root Theorem)
我在RSA学习总结的第三部分关于Mille-Rabin素数测试的正确性证明里需要用到此定理,由于证明太长,故另开一章于此.(为啥我说话突然文绉绉了Orz,可能是这周辩论打多了) 结论是对素数p,mod ...
- Python之路,第一篇:Python入门与基础
第一篇:Python入门与基础 1,什么是python? Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. 2,python的特征: (1)易于学习,易于利用: (2)开 ...
- python 闭包和迭代器
一 函数名的运用:(函数名是一个变量,但它是一个特殊变量,与括号配合可以执行变量. (1) 函数名可以赋值给其他变量 def chi(): print("吃月饼") fn=chi ...
- MergeKLists
public ListNode mergeKLists(ListNode[] lists) { if(lists==null||lists.length==0) return null; Priori ...
- PS学习之小猪佩奇身上纹,掌声送给社会人
首先准备素材 用ps首先打开素材一 首先对图片去色 快捷键:shift+Ctrl+u 调整色阶 设置高斯模糊: 另存为psd格式,命名为叠加的对象 再次打开素材一,把佩奇拖入到图层里,并调整大小,旋转 ...
- JAVA 实用插件
一.alibaba开发规约插件 https://p3c.alibaba.com/plugin/eclipse/update 下载地址 alibaba是个优秀的公司,这个插件能很好的规范代码,推荐给大家 ...
- 【Jmeter】分布式并发测试
一.前提: 1.最近在做一下压测,但是单台服务器的CPU,内存可能不够支撑压测的项目,这时候,我们可以使用Jmeter分布式压测. 2.本次使用的环境: 1台服务器做master(调度器) 5台服务器 ...
- 【java编程】ServiceLoader使用看这一篇就够了
转载:https://www.jianshu.com/p/7601ba434ff4 想必大家多多少少听过spi,具体的解释我就不多说了.但是它具体是怎么实现的呢?它的原理是什么呢?下面我就围绕这两个问 ...
- PureComponent的作用及一些使用陷阱
默认渲染行为的问题 在React Component的生命周期中,有一个shouldComponentUpdate方法.这个方法默认返回值是true. 这意味着就算没有改变组件的props或者stat ...