DedeCMS标签扩展
定义标签
在解析式模板引擎中我们需要定义全局标签,在上面的文档说明中已经知道在系统根目录下 /include/taglib
中进行扩展,标签的文件名应该是:标签.lib.php
,例如 arclist
所对应的标签名称则为:arclist.lib.php
。
我们创建一个测试的标签 {dede:test name='dedecms'/}
,那就需要创建一个名为 test.lib.php
的文件。
标签文件内容结构
标签内容的文件结构如下,为一个函数
<?php
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)
就是我们标签的扩展函数,所有标签生成的内容都是由这个函数解析后获得的。
属性处理
函数中 $attlist="row|12,titlelen|24"
为系统默认属性的参数,例如我们上面 test 标签需要一个默认的属性 name
,并且 name
为空,则需要更改为:
$attlist="name|"
这里符号 ,
用来隔开各个属性,符号 |
用来分隔变量的名称和值,这里 name|
则代表默认参数 name
为空。
我们在使用参数的时候,直接使用 $name
就可以在函数中进行调用了,例如:
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;
}
我们在系统后台标签测试器中进行测试:
底层模板处理
一般的标签会涉及到底层模板,例如:arclist
、channel
等,我们来扩展下我们上面标签的功能:
{dede:test name='dedecms'/}
我的名字叫:[field:name/]
{dede:test}
这里 我的名字叫:[field:name/]
则为我们要处理的底层模板,[field:name/]
为我们标签属性中的 name
。
这里我们需要了解 lib_test(&$ctag,&$refObj)
函数中 $ctag
参数,这个参数就是我们解析式模板引擎获取的当前标签内容,其中这个对象下有一个 GetInnerText()
方法能够获取当前标签的底层模板。
<?php
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;
}
?>
这样我们就完成了一个简单的对底层模板解析的处理。
标签其他一些开发技巧可参考 /include/taglib
其他标签文件。
相关文档
- pbootcms、dedecms等模板标签正则替换为迅睿cms标...
- 迅睿cms模板循环标签每隔几行几个更换或指定输出特定样式
- 用jQuery替换文章编辑器里的图片样式及alt标签 实现自定义...
- 迅睿cms站群系统实现全国城市分站功能插件及调用标签
- 迅睿XunRuiCMS管理员密码忘记,如何重置后台密码
- 外贸网站H2标签SEO优化注意事项
- 外贸网站图片原创度及Alt标签SEO优化
- WordPress如何批量删除无用的标签
- 高质量的页面首段内容比Meta标签重要
- 做好外贸网站Meta标签SEO优化设置
- 迅睿CMS:DISTINCT Expression #1 of ...
- 迅睿CMS:模板标签生成器
- 当前栏目如何调用同级栏目?
- 当前栏目如何调用子栏目?
- 定制的零件列表的标签调用方法
- 易优CMS指定文章列表获取tag标签
- 关于文章发布时间,更新时间的标签用法
- 筛选标签应用于select的调用方法
- 首页或者列表页直接调用下载的标签
- 易优CMS 如何分栏目调用banner图
上一篇: DedeCMS其它标签
下一篇: DedeCMS常用函数