700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > php 调取子栏目 Dedecms 如何调取某个栏目所在的顶级栏目及顶级下的子栏目

php 调取子栏目 Dedecms 如何调取某个栏目所在的顶级栏目及顶级下的子栏目

时间:2022-05-31 14:51:57

相关推荐

php 调取子栏目 Dedecms 如何调取某个栏目所在的顶级栏目及顶级下的子栏目

DEDEcms系统制作网站时,它本身提供了很多标签,但要想自己在使用过程中满足自己的特别需求,还得二次开发改它的内核。如需要用到调用当前栏目的顶级栏目下的所有子栏目,不指定typeid,那么应该如何操作呢?

应用场景:

导航功能,Dede自身提供的方法只能通过指定父栏目id来实现,一个站很多地方需要只调用当前栏目的顶级栏目下的所有子栏目,不指定typeid,那模板代码怎么实现?

1. 找到\include\taglib\channelartlist.lib.php

找到: $attlist = ‘typeid|0,row|20,cacheid|’;

修改为:$attlist = ‘typeid|0,row|20,cacheid|,type|’; //这边加个 type 实现 在子栏目下调用 同级子栏目的信息

2. 修改66行处的代码

if($typeid==0 || $typeid==’top’) {

$tpsql = ” reid=0 AND ispart<>2 AND ishidden<>1 AND channeltype>0 “;

}

在它前面加个if条件判断,修改为:

if($type=='reid') {

$reid = $refObj->TypeLink->TypeInfos['reid'];

if( $reid == 0 ){

$tpsql = " reid='$typeid' AND ispart<>2 AND ishidden<>1 ";

}else{

$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=’1′}

底层循环代码

{/dede:channelartlist}

就可以方便调用了.

示例代码:

{dede:channelartlist type=’reid’ row=’1′}

{dede:channel type=’son’}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。