在使用DEDECMS建网站的时候,使用channelartlist调用栏目列表的时候,只能使用{dede:channelartlist typeid=‘1’ row='5'},这样调用有一个局限性,就是必须指定typeid,但是通常这样达不到我们的要求,我们需要的是自动调用当前栏目的同级栏目,没办法指定typeid,所以我们要对DEDE的标签进行一下二次开发才可以自动调用同级栏目列表。
channelartlist标签对应的物理文件为:\include\taglib\channelartlist.lib.php 文件,我们找到这个文件,打开之后,查找$attlist = 'typeid|0,row|20,cacheid|',把这个修改为:$attlist = 'typeid|0,row|20,cacheid|,type|'
然后再查找
if($typeid==0 || $typeid=='top') {
$tpsql = " reid=0 AND ispart<>2 AND ishidden<>1 AND channeltype>0 ";
}
修改为:
if($type=='reid') //调用上级目录下的子栏目内容
{
$reid = $refObj->TypeLink->TypeInfos['reid'];
$tpsql = " reid='$reid' AND ispart<>2 AND ishidden<>1 ";
}
else if($typeid==0 || $typeid=='top') {
$tpsql = " reid=0 AND ispart<>2 AND ishidden<>1 AND channeltype>0 ";
}
保存之后就可以使用以下方法调用当前栏目的同级栏目列表了
{dede:channelartlist type='reid' row='5'}
底层循环代码
{/dede:channelartlist}