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. UVa1585 Score

    #include <stdio.h> int main(){    int T, O, score;    char str[81], *p;    scanf("%d" ...

  2. IDEA 15 社区版 Maven项目 启动Tomcat调试

    1.在pom下添加Tomcat插件: <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifac ...

  3. Protel99SE制作拼板的方法

    制作步骤: 1.在PCB编辑里按快捷键 S/A全选复制源PCB全部内容,再按Ctrl+C看到十字光标.点击左键. 2.打开目标PCB文件,点击Edit菜单,在下拉菜单中点击Paste special( ...

  4. 用QComboBox实现tree状结构(QComboBox居然有setView和setModel函数)

    实现的效果图如下:  #include "mainwindow.h" #include <QApplication> #include <QTreeView> ...

  5. Apache RewriteCond RewriteRule 入门和Laravel去掉index.php

        Ci删除index.php办法: 创建.htaccess 文件放到网站的根目录下,文件中的内容如下: RewriteEngine onRewriteCond %{REQUEST_FILENAM ...

  6. Hibernate Dialect must be explicitly set

    在偶然一次运行hibernate测试类的时候,出现如下错误,Exception in thread "main" org.hibernate.HibernateException: ...

  7. HDU 2393 Higher Math

    #include <cstdio> #include <string> using namespace std; void swap(int& a,int& b ...

  8. [置顶] 使用mongofiles操作GridFS

    使用mongofiles操作GridFS GridFS描述: GridFS,看起来像一种文件系统,其实是一种数据库用法.主要用来在数据库中存储二进制大文件.可以统一用数据库处理数据,而无需借助外部的文 ...

  9. [dfs+水] hdu 4462 Scaring the Birds

    题意: N*N的矩阵中有M个点能够放稻草人.且给覆盖距离R 每一个稻草人能覆曼哈顿距离R以内的点 问最少须要多少个稻草人 思路: 由于范围非常小,直接能够暴力 注意稻草人所在的位置是不须要被覆盖的 代 ...

  10. java 解析国密SM2算法证书

    首先说明用Java自带的解析x509证书类,是不能解析sm2算法的证书,执行会抛出异常. 用开源库bouncycastle能够解析.详细代码 private byte[] getCSPK(byte[] ...