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.定义标签

 1     class TagLibSmarTop extends TagLib{
 2         protected $tags = array(
 3             //nav定义字段  attr 定义属性  close 是否是闭合
 4             ‘nav‘ => array(‘attr‘=>‘limit,order‘,‘close‘=>1),
 5             ‘child‘ =>array(‘attr‘=>‘limit,order,typeid‘,‘close‘=>1),
 6             ‘navnav‘ =>array(‘attr‘=>‘limit,order,typeid‘,‘close‘=>1),
 7         );
 8         /**
 9         *定义标签
10         *@param $attr array 接受的属性
11         *@param $content string 接受的字符串
12         *@return $str 返回字符串
13         */
14         public function _nav($attr,$content){
15             $tag = $this->parseXmlAttr($attr,$content);
16             $Cate = D(‘cate‘);
17             $result =$Cate->sortChildCate($Cate->order($tag[‘order‘])->limit($tag[‘limit‘])->select());
18             $str = ‘‘;
19             foreach($result as $k=>$v){
20                 //使用str_replace()函数进行对字符串的替换
21                 $str .=str_replace(array(‘[field:id]‘,‘[field:typename]‘),array($result[$k][‘id‘],$result[$k][‘name‘]),$content);
22             }
23             return $str;
24         }
25         /**
26         *定义标签 功能待开发只限于2级栏目调用
27         *@param $attr array 接受的属性
28         *@param $content string 接受的字符串
29         *@return $str 返回字符串
30         */
31         public function _child($attr,$content){
32             $tag = $this->parseXmlAttr($attr,$content);
33             $Cate = D(‘cate‘);
34             $where = array(‘pid‘=>empty($tag[‘typeid‘])?0:$tag[‘typeid‘]);
35             $result =$Cate->where($where)->order($tag[‘order‘])->limit($tag[‘limit‘])->select();
36             $str = ‘‘;
37             foreach($result as $k=>$v){
38                 //使用str_replace()函数进行对字符串的替换
39                 $str .=str_replace(array(‘[field:id]‘,‘[field:name]‘),array($v[‘id‘],$v[‘name‘]),$content);
40             }
41             return $str;
42         }
43         public function _navnav($attr,$content){
44             $tag= $this->parseXmlAttr($attr,$content);
45             //使用php代码以字符串的形式返回到模板里面 要以单引号括起来
46             $str =‘<?php ‘;
47             $str .= ‘$Cate = M("cate");‘;
48             $str .= ‘$_result = cateModel::sortChildCate($Cate->select());‘;
49             $str .=‘foreach($_result as $__CateNav):‘;
50             $str .=‘extract($__CateNav);?>‘;  //将数组的$.__CateNav[]去掉
51             $str .= $content;aaa
52             $str .= ‘<?php endforeach?>‘;
53             return $str;
54         }
55     }

4.模板使用标签

 1       <navnav limit =‘20‘  order=‘id ASC‘>
 2                 <li class=‘nav-lv1-li‘>
 3                     <a href="" class=‘top-cate‘>{$name}</a>
 4                     <ul>
 5                         <foreach item=‘value‘ name="child">
 6                             <li><a href="">{$value.name}</a></li>
 7                         </foreach>
 8                     </ul>
 9                 </li>
10             </navnav>
 1             <nav limit =‘20‘  order=‘id ASC‘>
 2                 <li class=‘nav-lv1-li‘>
 3                     <a href="" class=‘top-cate‘>[field:typename]</a>
 4                     <ul>
 5                         <child  limit =‘20‘  order=‘id ASC‘ typeid="[field:id]">
 6                             <li><a href="">[field:name]</a></li>
 7                         </child>
 8                     </ul>
 9                 </li>
10             </nav>
时间: 2024-07-31 06:35:54

Thinkphp自定义标签的相关文章

ThinkPHP 自定义标签

\TagLib\TagLibTaoWan.class.php 标签存放目录以及命名规则! config.php 设置!

(转)ThinkPHP自定义标签

第一:在当前应用下的Conf文件夹中config.php加两个配制项: 'TAGLIB_LOAD' => true,//加载标签库打开 'APP_AUTOLOAD_PATH' => '@.TagLib',//标签库的文件名 'TAGLIB_BUILD_IN' => 'Cx,Pic',//标签库类名 第二:在当前的应用创建一个名为TagLib(注意,和上面配制项的第二项名字一样)的文件夹, 然后在文件建一php文件,文件名为TagLibPic.class.php(注意看配制项是的颜色,命名

(转) ThinkPHP模板自定义标签使用方法

这篇文章主要介绍了ThinkPHP模板自定义标签使用方法,需要的朋友可以参考下 转之--http://www.jb51.net/article/51584.htm 使用模板标签可以让网站前台开发更加快速和简单,使用过dedecms.phpcms等内容管理系统的人应该都知道,cms的前台都是使用模板标签来调用数据.以调用文章列表为例: dedecms可以写成: ? 1 2 3 4 5 <ul> {dede:arclist row='10' orderby='id desc' titlelen='

(转)ThinkPHP自定义模板标签详解

转之--http://www.thinkphp.cn/topic/6258.html 模板标签让网站前台开发更加快速和简单,这让本该由程序猿才能完成的工作,现在只要稍懂得HTM的人也能轻易做到,这也就是模板标签的强大之处.接触过dedecms或者phpcms等内容管理系统的人都知道,cms的前台都是使用模板标签来调用数据,如列表,内容.来看一个phpcms v9调用数据排行列表的标签: 1 {pc:content action="hits" catid="6" nu

JSP自定义标签

假设 向浏览器输出当前客户的IP地址 ,我们现在可以这样写 <% //获取当前用户的IP地址 String ip=request.getRemoteHost(); out.print("当前用户的IP地址是:"+ip); %> 但我们现在为了要在jsp页面尽量减少java代码,这个时候我们可以向前面学标签一样,自己来定义一个标签,通过调用标签来达到实现显示客户端的ip地址. 首先第一步我们要创建一个普通的java类,继承SimpleTagSupport类,叫标签处理器类(用

Javaweb学习笔记6—EL表达式与JSTL及自定义标签

 前几天博客被黑了,导致博客登陆不上,把前几天应该发的东西的东西重新发一遍 今天来讲javaweb的第六阶段学习. EL表达式与JSTL及自定义标签是对上篇文章介绍的JSP的扩展,不能说是很重要的东西,但是也要了解. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载 另外:如果图看不清的话请右击---在新窗口中打开会清楚很多. 一.EL表达式 1,EL简介 Expression Lan

JSP自定义标签渲染时报Illegal to flush错误

javax.servlet.ServletException:Illegal to flush within a custom tag 此错误是因为在JSP页面中的某一个自定义标签的doStartTag或doEndTag中用了out.flush,而其他的自定义标签没有导致.可以去掉out.flush. JSP自定义标签渲染时报Illegal to flush错误,布布扣,bubuko.com

java jsp自定义标签

自定义标签开发步骤 1)编写一个普通的java类,继承SimpleTagSupport类,叫标签处理器类 package gz.itcast; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.SimpleTagSupport; public class iftag extends SimpleTagSupport { private boolean

zTree更新自定义标签&gt;&gt;&gt;

zTree>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> x 本来想自己敲一个zTree的例子的>>> 但是一想zTree文档做的这么好,直接拷贝过来一个得了... 哈哈>>> <!DOCTYPE html> <html> <head> <