DedeCMS在做某个网站开发的帮助页面时,由于包含的项目很多,可以建立多个子栏目,每个栏目下面的写文章即可。

效果图如下:


织梦能嵌套多个标签只有{dede:channelartlist}标签,栏目和栏目、文章和文章之间为同级关系,但该标签并没有调用同级栏目的功能。而且该标签不支持currentstyle,无法直接实现高亮的功能。

channelaritlist支持用reid调用同级栏目

找到 

//处理标记属性、innertext

把下面的

$attlist = 'typeid|0,row|20,cacheid|';

修改为

$attlist = 'typeid|0,row|20,cacheid|,type|';//by


继续找到

//获得类别ID总数的信息

    $typeids = array();

把下面的

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

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

    }

修改为  

//调用上级目录下的子栏目内容by

    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 ";

    }

//by 


channelartlist支持currentstyle属性

参考文章《织梦让channelartlist标签支持currentstyle高亮属性方法》


*后提供一种前台的写法,有基础的朋友自行修改。

{dede:channelartlist type='reid' currentstyle='current'}

<div class="active">{dede:field.typename/}</div>

<div class="{dede:field.currentstyle/}">

 <ul class="nav">

 {dede:arclist row='10' currentstyle="<li class='active'><a href='~typelink~'>~typename~</a></li>"}

   [field:array runphp='yes']

     if(@me['currentstyle']){

     @me = @me['currentstyle'];

    }else{

     @me = "<li><a href='{@me['arcurl']}'>{@me['title']}</a></li>";

     }

   [/field:array]

  {/dede:arclist}

 </ul>

</div>

{/dede:channelartlist}