ThinkPHP 官方文档:http://document.thinkphp.cn/manual_3_2/taglib_driver.html

创建一个类,继承自TagLib类:

<?php
/**
* 自定义标签库
*/Class TagLibHf extends TagLib {
//接收标签
Protected $tags = array(
'nav' => array(
'attr' => 'order',
'close' => 1
),
); Public function _nav($attr, $content) {
$arr = $this->parseXMLAttr($attr, 'nav'); $str = <<<str
<?php
\$_nav_cate = M('Cate')->order("{$arr['order']}")->select();
import('Class.Category', APP_PATH);
\$_nav_cate = Category::mergeCateToTwoArray(\$_nav_cate);
foreach( \$_nav_cate as \$_nav_cate_v ) :
extract( \$_nav_cate_v );
    \$url = U('/c_' . \$id);/*生成URL*/
?>
str;
$str .= $content;
$str .= '<?php endforeach; ?>';
return $str;
}
}

上面的代码最终生成的php代码:

<?php
$_nav_cate = M('Cate')->order("sort")->select(); import('Class.Category', APP_PATH); $_nav_cate = Category::mergeCateToTwoArray($_nav_cate); foreach( $_nav_cate as $_nav_cate_v ) : extract( $_nav_cate_v ); ?><li class='nav-lv1-li'>
<a href="" class='top-cate'><?php echo ($name); ?></a>
<ul>
<?php if(is_array($child)): foreach($child as $key=>$v): ?><li><a href=""><?php echo ($v["name"]); ?></a></li><?php endforeach; endif; ?>
</ul>
</li><?php endforeach; ?>

前台代码(部分):

<div class='top-nav-wrap'>
<ul class='nav-lv1'>
<li class='nav-lv1-li'>
<a href="" class='top-cate'>博客首页</a>
</li> <nav order="sort">
<li class='nav-lv1-li'>
<a href="<{$url}>" class='top-cate'><{$name}></a>
<ul>
<foreach name="child" item="v" >
<li><a href="<{:U('/c_' . $v['id'])}>"><{$v.name}></a></li>
</foreach>
</ul>
</li>
</nav> </ul>
</div>

开启配置文件:

<?php
return array(
'APP_AUTOLOAD_PATH' => '@.TagLib',
'TAGLIB_BUILD_IN' => 'Cx,Hf'
);

ThinkPHP - 自定义标签库 - 标签驱动的更多相关文章

  1. JSTL标签库之核心标签

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  2. JSP 核心标签库

    1 JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 2 JSTL标签库分类 核心标 ...

  3. javaweb学习总结(二十八)——JSTL标签库之核心标签

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  4. javaWeb学习总结(9)- JSTL标签库之核心标签

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  5. EL表达式、JSTL标签库

    一.EL(Expression Language)表达式 语法结构:${var} 若要停用对EL表达式的评估的话,需要使用page指令将isELIgnored属性值设为true: <%@ pag ...

  6. jsp jstl标签库核心标签

    JSTL标签库介绍 JSTL标签库的使用时为了弥补html标签的不足,规范自定义标签的使用而诞生的.使用标签的目的就是不希望在jsp页面中出现java逻辑代码 全称:JSTL标签库分类 核心标签库使用 ...

  7. Java精选笔记_JSTL(JSP标准标签库)

    JSTL(JSP标准标签库) JSTL入门 JavaServer Pages Standard Tag Library:JSP标准标签库 在JSP中可以通过Java代码来获取信息,但是过多的Java代 ...

  8. JSTL标准标签库具体解释

    JSTL标签库的使用是为类弥补html表的不足.规范自己定义标签的使用而诞生的. 在告别modle1模式开发应用程序后.人们開始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同一时候也 ...

  9. JSP标签语法、JSTL标签库、EL表达式辨析

    <一.JSP > JSP 语法语法格式: <% 代码片段 %>或者<jsp:scriptlet> 代码片段</jsp:scriptlet> JSP声明 ...

随机推荐

  1. 1.4. chromium源代码分析 - chromiumframe - 消息系列

    Message framework 是对消息循环的封装和扩展,Chromium在消息循环中增加处理内部任务的工作.将内部工作处理寄生在Windows的消息循环中,会有一个问题,就是没有Windows自 ...

  2. 浮点数(double)的优势

    用 double 处理大数据 , 即使字符串位数超百位,同样可以用 sscanf 或 atof 来处理,却不会变成负数,原因是浮点数可以用指数表示,但精度会丢失,下面介绍利用这个性质解决的一些问题: ...

  3. input file 模拟

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  4. android五种布局模式

    Android布局是应用界面开发的重要一环,在Android中,共有五种布局方式,分别是:LinearLayout (线性布局),FrameLayout(框架布局),AbsoluteLayout(绝对 ...

  5. DB2 VC++ 中连接字符串

    根据你安装的驱动,有如下两种连接字符串形式.Provider=DB2OLEDB;Network Transport Library=TCPIP;Network Address=xxx.xxx.xxx. ...

  6. 【转载】python 模块 - random生成随机数模块

    随机数种子 要每次产生随机数相同就要设置种子,相同种子数的Random对象,相同次数生成的随机数字是完全相同的: random.seed(1) 这样random.randint(0,6, (4,5)) ...

  7. django FileFIeld和ImageField 上传路径改写

    def get_file_path(instance, filename): return 'file/document/%s/%s/%s' % (instance.period.code, inst ...

  8. 为什么Lisp没有流行起来

    很久以前,这种语言站在计算机科学研究的前沿,特别是人工智能的研究方面.现在,它很少被用到,这一切并不是因为古老,类似古老的语言却被广泛应用.其他类似的古老的语言有??FORTRAN. COBOL. L ...

  9. BZOJ 1005 明明的烦恼 (组合数学)

    题解:n为树的节点数,d[ ]为各节点的度数,m为无限制度数的节点数. 则               所以要求在n-2大小的数组中插入tot各序号,共有种插法: 在tot各序号排列中,插第一个节点的 ...

  10. Android高斯模糊

    传送门 github地址:http://developer.android.com/guide/topics/renderscript/compute.html: https://github.com ...