http://blog.linuxphp.org/archives/1457/
织梦标签的嵌套判断
keminar 发表于 2011-12-29 19:21:00. 发表在: Web技术
织梦的标签对于网长来说是个不错的东西,多少人用他实现了站长梦。但是它也有一些缺点,如不支持判断,不支持嵌套,系统带的单个标签又不能满足业务需要。
以下就讲如何在织梦里自定义标签来实现嵌套判断的效果,以下内容需要一点点开发基础。
标签都放在include/taglib目录,以*.lib.php命名,以下我们以mbox.lib.php为例。
新建include/taglib/mbox.lib.php
在文件里写函数lib_mbox (函数以lib_开头,后面和文件名一致)
function lib_mbox(&$ctag, &$refObj)
{
}
读取标签配置(这里设定有typeid,row,col三个参数,每个都有默认值)
$innertext的值是标签内的值 {dede:mbox}和{/dede:mbox}中间的值,使用DedeTagParse进行分析可以得到高级使用,可以参考include/taglib/mytag.lib.php 文件。如果不需要可以不写。
$attlist = "typeid|0,row|100,col|1";
FillAttsDefault($ctag->CAttribute->Items,$attlist);
extract($ctag->CAttribute->Items, EXTR_SKIP);
$innertext = $ctag->GetInnerText();
读取当前页面的栏目id和父级栏目id
$ref_id = $refObj->TypeLink->TypeInfos['id']; $ref_reid = $refObj->TypeLink->TypeInfos['reid'];
返回值到模板使用return而不是echo
这些基本元素了解了之后就可以写代码了,不管是判断还是循环还是多层嵌套,应有尽有。
下面给出上面代码片段组合后的样子
function lib_mbox(&$ctag, &$refObj)
{
$attlist = "typeid|0,row|100,col|1";
FillAttsDefault($ctag->CAttribute->Items,$attlist);
extract($ctag->CAttribute->Items, EXTR_SKIP);
$innertext = $ctag->GetInnerText();
$ref_id = $refObj->TypeLink->TypeInfos['id'];
$ref_reid = $refObj->TypeLink->TypeInfos['reid'];
$data = "......";//具体实现省略
return '这里是输出的数据'.$data;
}
模板里使用
{dede:mbox typeid='67'}
<li><a href="[field:typeurl/]">[field:typename/]</a></li>
{/dede:mbox}
delphi lazarus opengl
网页操作自动化, 图像分析破解,游戏开发