thinkphp2.1自定义标签的使用(官方文档不够详细)

下载新版thinkphp2.1 解压,有个doc文件夹,里面有Thinkphp2.1《自定义标签示例说明.pdf》。
1,建立标签解析类,如lib/TagLib/TagLibXXX.class.php
2,建立加载加载文件 conf/taglis.php
3,模版中使用。

官方文档有的内容我就不多讲了。

我说一下TagLibArticle.class.php这个文件。

代码结构可以分为两个部分。
一个tags属性定义标签。
若干了方法,定义解析过程。

1,tags属性中的参数说明一下。
  定义标签的格式:
protected $tags = array(
// 标签定义:
//attr 属性列表 close 是否闭合(0 或者1 默认1) alias 标签别名level 嵌套层次
'tagname'=>array('attr'=>'attr1,attr2','level'=>3),
);

attr 参数不用说了, 定义属性列表(其实没有在上面定义过的属性也是能用的)

close是否闭合,为1表示闭合,你的标签必须成对出现,如 中间内容 ,

为0表示不闭合,如  , 不闭合的标签,在标签解析方法中不能获得内容。

alias 标签别名,一般用于简化某个复杂的标签。比如说thinkphp自带标签eq,gt,lt等标签的功能其实都可以用

compare标签属性,eq,gt,lt是compare标签的简化用户, 那么在定义compare标签时 它会有别名eq,gt,lt,注意也

要给别名定义解析方法。不多说了,再说又要举例子,又是一大堆代码,大家可以看看 官方标签是怎么定义的

Thinkphp/Lib/Think/Template/TagLib/TagLibCx.class.php

level 嵌套层次,实际是指嵌套次数。嵌套,就是一个标签里面还有这个标签。 如 中间

内容 中间内容 你如果设置level是1,嵌套使用两次的

会有一对标签不被解析, 如果你设置level为2,嵌套使用3次的话, 会有一对标签不被解析。一般嵌套的level都

是设置的3。 当然了 不闭合的标签不会有嵌套问题。

2,解析方法说明一下。
建立解析方法的格式

function _tagname($attr,$content){//前面两个参数是固定的,第一个是属性,第二个是内容,你可以在后面加

第三个,第四个参数,额外加的参数一般是给别名的解析方法用的。
$tag=$this->parseXmlAttr($attr);//一般都要解析标签属性
return $result ;//肯定要返回解析结果
}

解析方法中要注意2点。
1,分析代码是在解析模版时执行,还是在访问模版时执行。比如 你在解析方法中有读取数据库的代码,你如果不

把读取数据库的代码放在return 里面返回, 那只能在解析模版的时候才会执行, 访问网站的时候并没有读取数据

库。数据会很长时间不变。
2,注意return部分的php代码要用“php替代语法”。php正常语法有很多花括号, php替代语法就是把 左花括号“

{” 换成 冒号“:” 把右花括号“}” 换成以end开始的语句。你如果是if语句,就是endif,是foreach语句就是

endforeach。  为什么return部分 要用 php替代语法?我们知道 thinkphp 的变量标签也是有花括号的, 用替代

语法是为了 不影响变量标签的解析,php正常语法的花括号有可能会导致你的一些变量不能被正常解析。

大家可以看我发布的视频教程,http://www.3g4k.com/Index/articlecontent/id/29 第三部分就是专门解决thinkphp自定义标签的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值