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 ...
随机推荐
- Spring Boot 揭秘与实战(七) 实用技术篇 - 异步任务
文章目录 1. Spring Boot 集成异步任务 2. 单发服务模式 3. 请求应答模式 4. 源代码 Spring 对异步任务具有很好的支持.这篇文章,我们透过 Spring Boot 来讲解下 ...
- 模拟php curl向远程服务器上传文件
test.php <?php header('content-type:text/html;charset=utf8'); $file = dirname(__FILE__).'/1.jpg'; ...
- DG增量恢复
本篇文档: 讲述DG环境出现GAP归档缝隙,且主库的该归档日志被删除的情况下,快速恢复DG的连通性 流程讲述: >明确主库增量备份起点 scn 查询备库控制文件current scn ,及v$d ...
- selenium 定位无标签的元素
转载需注明出处. 如: ::before 伪元素xpath css_selector. id. class_name各种定位失效,可以选择用, .get_attribute('innerHTML')方 ...
- JavaBasic_05
方法 简述:实现特定功能的代码块 格式 修饰符: 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…){ 函数体; return 返回值;} 方法格式 ...
- 对Functional Language的认识
What: A functional language is a programming language built over and around logical functions or pro ...
- python基础-函数基本特性和用法
函数: 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因变量,y是x的函数.自变量x的取值 ...
- 【HAOI2008】圆上的整点
数学题 原题:平面上有一个圆, 圆心坐标为(0,0),半径为n. 问圆周上有多少个整点. 整点的定义即x,y坐标均为整数的点. 这根本就是一道数学题,注意是数学题,不是数论,数学! 纯粹就看魔性变公式 ...
- 企业库实现AOP的几种方法
1.创建新对象时,分继承基类和继承接口 TargetClass theTarget = PolicyInjection.Create<TargetClass>(parameter1, pa ...
- Centos7使用yum安装程序软件时提示未找到安装包解决方法
查找程序软件源,以sshd为例,假设sshd安装包无法找到,那么可以通过以下方法解决 yum provides sshd 然后我们就可以安装*.X86_64的程序软件源 例如yum install o ...