关于标签的个人理解是 拼凑php 字符串 通过eval()来进行,返回数据。过程应该是这样的,在模板中加入 定义标签为<mytag:list></mytag>,那么在mvc 中解析模板的时候,用正则来匹配 该标签,如果发现符合的标签 就去 寻找mytag 这个类,并实例 调用这个类下的 list方法 进行逻辑运算 返回数据。

在thinkphp 中扩展 自定义标签

下面以输出 面包屑 为例:

参照官方内置 标签类写法。在任何地方 建一个你的标签类,我这里是 放在Home\Mytag文件夹下 文件名 : 类名+class.php

这里以 Crumb.class.php 为例:

<?php
namespace Home\Mytag;//在thinkphp 中自定义标签类 一定要用命名空间 否则,thinkphp无法找到该类
use Think\Template\TagLib; class Crumb extends TagLib{
protected $tags = array(
"show" => array() ); public function _show()
{
    $str = ' <?php ';
    $str .= ' echo "哈哈哈哈哈哈"; ';
    $str .= ' ?> ';
    return $str;
  }
}

  上面已经把自定义标签最基本的类定义好了,现在只要在需要用到该标签 地址引入该标签,即可,在使用该标签<Crumb:show></Crumb:show> 之前一定要先引入该标签类再调用 自定义标签。引入代码如下:

<taglib name="Home\Mytag\Crumb"/>{/* 这是加载需要需要的自定义标签类 */}
<Crumb:show></Crumb:show>{/* 调用自定义标签 */}

  如果这个标签需要接受参数传入,案例如下:

namespace Home\Mytag;
use Think\Template\TagLib; class Crumb extends TagLib{
protected $tags = array(
"show" => array('attr'=>'cateid') );
//如果需要通过属性 方式传值进来,一定要先在这里 定义好,否则不能正常运行。$content 这个不用定义,只要在标签对之间输入 就可以在这里类中获取到
public function _show($tag,$content)
{
$str = ' <?php ';
$cateid = $tag['cateid'] ;
//这里进行 自己逻辑运行,输出内容,到一个 变量中,然后return 即可
$str .=' echo "'.'<li><a href=\"#\">首页</a></li><li><a href=\"#\">新闻资讯</a></li><li class=\"active\">这是一篇新的资讯</li>'.'"; '; //$str .= ' echo "通过属性传进来的:'."$cateid".'传进来的 内容;'."$content".'";' ;
$str .= ' ?> ';
return $str;
}
}

  传参数调用这个标签 如下:

<taglib name="Home\Mytag\Crumb"/>
<Crumb:show cateid="44">这里是的内容可以传给$content变量</Crumb:show>

  运行效果如下:

最新文章

  1. 对属性NaN的理解纠正和对Number.isNaN() 、isNaN()方法的辨析
  2. WinPhone学习笔记(五)——LongListSelector
  3. 1D1D动态规划优化初步
  4. linux设置和删除环境变量
  5. 手把手教你 用 wpf 制作metro ProgressRing (Windows8 等待动画)
  6. Windows Server 2012 R2 设置 smtp 服务器
  7. VBS基础篇 - Err对象
  8. 构建CMDB的一些启发
  9. poj1201/zoj1508/hdu1384 Intervals(差分约束)
  10. Time Out 访问数据库超时处理 .NET
  11. (10.23)Java小知识!
  12. auxblogcms1.0.6|代码审计
  13. Unity3D寻路导航烘焙
  14. Monkey如何使用
  15. java第一次,第二次实训
  16. nginx+ftp服务器搭建简易文件服务器
  17. python 函数递归与匿名函数
  18. [术语] CRUD 增删改查
  19. Oracle 11.2.0.4.0 Dataguard部署和日常维护(2)-Datauard部署篇
  20. 黄聪:bootstrapValidator验证成功,按钮变灰却无法提交的问题

热门文章

  1. NOIP2003 侦探推理
  2. C语言结构
  3. HDOJ-ACM1071(JAVA) 定积分
  4. 使用Jquery.load()方法,出现-此页的状态信息无效,可能已损坏。[转]
  5. 再看GOPATH
  6. (qsf文件 、 tcl文件 和 csv(txt)文件的区别) FPGA管脚分配文件保存、导入导出方法
  7. hdoj 4612 Warm up【双连通分量求桥&amp;&amp;缩点建新图求树的直径】
  8. 1514:数值的整数次方 @jobdu
  9. Jquery UI 组合树 - ComboTree 集成Wabacus4.1 代码剖析
  10. 算法基础:最大递减数问题(Golang实现)