百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>织梦CMS教程> 织梦(dedecms)扩展标签说明
分享文章到:

织梦(dedecms)扩展标签说明

发布时间:02/08 来源:未知 浏览: 关键词:

1.定义标签

在解析式模板引擎中我们需要定义全局标签,在系统根目录下/include/taglib中进行扩展,标签的文件名应该是:标签.lib.php,例如arclist所对应的标签名称则为:arclist.lib.php。

我们创建一个测试的标签{dede:test name='tianya'/},那就需要创建一个名为test.lib.php的文件。

2 标签文件内容结构

标签内容的文件结构如下,为一个函数

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if(!defined('DEDEINC')) exit("Request Error!"); function lib_test(&$ctag,&$refObj) { global $dsql,$envs; //属性处理 $attlist="row|12,titlelen|24"; FillAttsDefault($ctag->CAttribute->Items,$attlist); extract($ctag->CAttribute->Items, EXTR_SKIP); $revalue = ''; //你需编写的代码,不能用echo之类语法,把最终返回值传给$revalue //------------------------------------------------------ $revalue = 'Hello Word!'; //------------------------------------------------------ return $revalue; }

这里function lib_test(&$ctag,&$refObj)就是我们标签的扩展函数,所有标签生成的内容都是由这个函数解析后获得的。

3.属性处理

函数中$attlist="row|12,titlelen|24"为系统默认属性的参数,例如我们上面test标签需要一个默认的属性name,并且name为空,则需要更改为:

$attlist="name|"

这里符号“,”用来隔开各个属性,符号“|”用来分隔变量的名称和值,这里“name|”则代表默认参数name为空。

我们在使用参数的时候,直接使用$name就可以在函数中进行调用了,例如:

1 2 3 4 5 6 7 8 9 10 function lib_test(&$ctag,&$refObj) { global $dsql,$envs; //属性处理 $attlist="name|"; FillAttsDefault($ctag->CAttribute->Items,$attlist); extract($ctag->CAttribute->Items, EXTR_SKIP); $revalue = '我的名字:'.$name; return $revalue; }

我们在系统后台标签测试器中进行测试:

`SJ0XR6C%RU}5QTGJN~RN]U.png

4.底层模板处理

一般的标签会涉及到底层模板,例如:arclist、channel等,我们来扩展下我们上面标签的功能:

1 2 3 {dede:test name='tianya'/} 我的名字叫:[field:name/] {dede:test}

这里“我的名字叫:[field:name/]”则为我们要处理的底层模板,[field:name/]为我们标签属性中的name。

这里我们需要了解lib_test(&$ctag,&$refObj)函数中$ctag参数,这个参数就是我们解析式模板引擎获取的当前标签内容,其中这个对象下有一个GetInnerText()方法能够获取当前标签的底层模板。

1 2 3 4 5 6 7 8 9 10 11 12 if(!defined('DEDEINC')) exit("Request Error!"); function lib_test(&$ctag,&$refObj) { global $dsql,$envs; //属性处理 $attlist="name|"; FillAttsDefault($ctag->CAttribute->Items,$attlist); extract($ctag->CAttribute->Items, EXTR_SKIP); $innertext= $ctag->GetInnerText(); // 获取底层模板 $revalue = str_replace("[field:name/]", $name, $innertext); // 对标签进行解析 return $revalue; }

这样我们就完成了一个简单的对底层模板解析的处理。

SGYEC)A9RO0}{N(W(}F_YPE.png

标签其他一些开发技巧可参考/include/taglib其他标签文件。

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有183人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板