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 ...
随机推荐
- SQL注入之Sqli-labs系列第十四关(基于双引号POST报错注入)
开始挑战第十四关(Double Injection- Double quotes- String) 访问地址,输入报错语句 ' '' ') ") - 等使其报错 分析报错信息 很明显是 ...
- Webservice客户端动态调用服务端功能方法
一.发布WebService服务 方式一:在服务端生成wsdl文件,下方客户端直接引用即可 优点:针对要发布的方法生成一个wsdl文件即可,无需多余配置. 缺点:每次服务端方法发生改变都需 ...
- ORACLE异常处理及函数
有三种类型的异常错误 :预定义 ( Predefined )错误 ORACLE预定义的异常情况大约有24个.对这种异常情况的处理,无需在程序中定义,由ORACLE自动将其引发. 非预定义 ( Pred ...
- webgl,threejs教程、笔记
发现一个不错的博客,学学. webgl和threejs教程
- 【转载】 强化学习(六)时序差分在线控制算法SARSA
原文地址: https://www.cnblogs.com/pinard/p/9614290.html ------------------------------------------------ ...
- 【转载】 火爆的996.ICU项目正在酝酿开源许可证 禁止996公司使用
原文地址: https://www.cnbeta.com/articles/tech/832449.htm ---------------------------------------------- ...
- MySQL内置功能
视图 # 创建视图 create view course2teacher as select * from course inner join teacher on course.teacher_id ...
- Java 枚举(enum) 详解4种常见的用法
JDK1.5引入了新的类型——枚举.在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便. 大师兄我又加上自己的理解,来帮助各位理解一下. 用法一:常量 在JDK1.5 之前,我们定义常 ...
- LeetCode - Number of Distinct Islands
Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) conn ...
- 【HAOI2012】容易题
终于自己做出一道题了quq 原题: 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下:有一个数列A已知对于所有的A[i]都是1~n的自然数,并且知道对于一些A[ ...