dedecms扩展标签和dede自定义标签的实现方法
点评:DedeCMS开始支持从V5.3扩展标签,但许多新成员很少使用的东西,并简要介绍了如何编写自己的调用标签。我们需要知道的目录和文件扩展名的标记名称,首先,标签的扩展存储在 /包括/标签库目录,名为标签name.lib.php格式,如{迪迪:渠道/ }标签对应的channel.lib.php文件。
我们可以看一个例子:demotag.lib.php标签
U3000 U3000
复制代码代码如下所示:
如果(!定义('dedeinc '))
{
退出()请求错误!;
}
功能lib_demotag($标签,refobj美元)
{
表全球美元,$ ENVS;
属性
行| ATTLIST美元= 12,titlelen | 24 ;
fillattsdefault($标签-> cattribute ->项目,$ ATTLIST);
提取物($标签-> cattribute ->项目,extr_skip);
人民币升值=;
您需要编写不能使用的代码,如回声语法,最终返回值被传递给重估价。
/ / ------------------------------------------------------
人民币升值的美元=你好词!
/ / ------------------------------------------------------
归还美元;
}
>
运行{迪迪:demotag / } {测试}我们全球模板标签登录系统后台,结果如下:
我们会发现标签工作并输出我们的内容。
到目前为止我们已经完成了这个标签的编写,其中主要涉及到很多PHP、mysql的知识,需要有一定的相关方面来写标签,当然,这只是一个简单的标签开发例子,有很多东西可以去开发。
这里我们知道,事实上,标签生成的内容实际上是这个函数的返回值。这里返回的内容都是字符串,也就是函数返回值,并且需要在处理后生成它的重估值。
行| ATTLIST美元= 12,titlelen | 24 ;这是属性列表。在处理完这个函数后,它将直接生成变量并复制。我们可以测试并做以下修改。
复制代码代码如下所示:
人民币升值的美元=你好词!
美元升值
行:行。美元。;titlelen:titlelen美元;
通过这种方式,我们可以看到这个属性已经创建和赋值。
下一步,我们可以进一步修改标签。
例如,我们需要编写一个标记来查询内容页的相关文章,这与上面SQL标记中的SQL类似。在这里,我们将它标记为一个标签。
我们可以创建一个新的标签,例如,被称为writerarc,然后我们需要创建一个writerarc.lib.php写功能,然后模仿demotag,注意需要修改。
功能lib_writerarc($标签,refobj美元)
接下来,我们可以向底层模板处理编写查询语句和相关函数。
复制代码代码如下所示:
人民币升值=;
元标签-> getinnertext innerText = $();
美元=新dedetagparse(CTP);
$ CTP -> setnamespace('field、{、});
为SQL =SELECT * FROM dnzsw04_archives,作家={ $ refobj ->字段{ 'writer} } 'limit 0,$行;
innerText美元这是潜在的模板用于获取标签,和$ CTP是建立在底层模板的处理变量,且加工更换。我们写的基础上获得的性能我们的SQL语句,在这里我们使用0美元的限制,行,这样的查询内容的数量基于$行确定。
当然,我们可以得到更多的属性,使我们的标签更强大。例如,我们可以增加类似于arclist和处理功能的属性,但这需要一定的PHP基础。
然后我们通过执行查询处理SQL和输出变量:
复制代码代码如下所示:
$ DSQL ->执行('me',$ SQL);
而(RS =美元美元DSQL -> getarray('me'))
{
根据查询变量的属性
RS {标题} = $(美元cn_substr RS {标题},titlelen美元);
获取/底部模板
$ CTP -> LoadSource($ innerText);
foreach($ CTP ->下tagid美元= > $ CTAg){
如果(!空(RS { strtolower美元($标签-> GetName(())})){
$ CTP ->分配(tagid美元美元,RS { $标签-> GetName()});
}
}
根据模板和查询变量结果
美元升值(美元CTP -> getResult);
}
通过这种方式,我们用底层模板中的相关变量替换查询结果,然后生成输出字符串,并将所有字符串信息存储在重新估价中。
最后,返回值重估值返回。
整个文件如下所示:
复制代码代码如下所示:
如果(!定义('dedeinc '))
{
退出()请求错误!;
}
功能lib_writerarc($标签,refobj美元)
{
表全球美元,$ ENVS;
属性
行| ATTLIST美元= 12,titlelen | 24 ;
fillattsdefault($标签-> cattribute ->项目,$ ATTLIST);
提取物($标签-> cattribute ->项目,extr_skip);
人民币升值=;
元标签-> getinnertext innerText = $();
美元=新dedetagparse(CTP);
$ CTP -> setnamespace('field、{、});
为SQL =SELECT * FROM dnzsw04_archives,作家={ $ refobj ->字段{ 'writer} } 'limit 0,$行;
$ DSQL ->执行('me',$ SQL);
而(RS =美元美元DSQL -> getarray('me'))
{
根据查询变量的属性
RS {标题} = $(美元cn_substr RS {标题},titlelen美元);
获取/底部模板
$ CTP -> LoadSource($ innerText);
foreach($ CTP ->下tagid美元= > $ CTAg){
如果(!空(RS { strtolower美元($标签-> GetName(())})){
$ CTP ->分配(tagid美元美元,RS { $标签-> GetName()});
}
}
根据模板和查询变量结果
美元升值(美元CTP -> getResult);
}
归还美元;
}
>
接下来,我们测试我们的标签,我们修改article_article.htm模板中添加以下代码标记:
{迪迪:writerarc行= '10'titlelen = 6}
{字段:标题
{ /迪迪:writerarc }