在dedecms开发中,经常会遇到循环输出一个顶级栏目下的所有二级栏目,循环出二级栏目标题、栏目内容标题链接等信息。

例,如图的栏目规划:

循环输出 工程案例 中的 4个子栏目及内容,并且循环出子栏目的标题,如图:最终效果

代码如下:

{dede:channelartlist typeid='58' row='5'}
        <div class="fullBlock">
            <div class="title"><a href="{dede:field name='typeurl'/}" target="_blank">更多..</a><aside>{dede:field name='typename'/} {dede:channel type='son' noself='1'} <a href='[field:typelink/]'>[field:typename/]</a> {/dede:channel}</aside></div>
            <div class="imglist">
                {dede:arclist row='4' titlelen='80' } <a href="[field:arcurl/]" target="_blank" title="[field:title/]"><img src="[field:litpic/]" /></a> {/dede:arclist}
            </div>
        </div>
        <div class="clear"></div> 
        {/dede:channelartlist}

1、指定channelartlist标签,设置typeid='58',row自定义设定。

2、循环栏目标题与内容

3、插入{dede:channel type='son' noself='1'} <a href='[field:typelink/]'>[field:typename/]</a> {/dede:channel}标签,type设置为son,子菜单。

4、注意,noself=‘1’是一个自定义标识,是因为dedecms有一个不知道真正目的的方法,在《include\taglib\channel.lib.php》文件中的第108行:

//如果用子栏目模式,当没有子栏目时显示同级栏目
    if($type=='son' && $noself=='0' && $reid!=0 && $totalRow==0)
    {
        $sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
            FROM `ig_arctype` WHERE reid='$reid' And ishidden<>1 order by sortrank asc limit 0, $line ";
        $dsql->SetQuery($sql);
      $dsql->Execute();
    }
5、这里的$noself=='0'是我自定义添加的,还要在第36行填写上这个标签的获取方式:

    $attlist = "typeid|0,reid|0,row|100,col|1,type|son,currentstyle|,cacheid|,noself|0";
在最后追加noself|0,默认是0,开启这个方法,在使用noself=‘1’时则当前栏目没有子栏目时,不读取同级栏目。


真实案例详见我公司网站作品: 哈尔滨天地人装饰工程有限公司






  哈尔滨品用软件有限公司致力于为哈尔滨的中小企业制作大气、美观的优秀网站,并且能够搭建符合百度排名规范的网站基底,使您的网站无需额外费用,即可稳步提升排名至首页。欢迎体验最佳的哈尔滨网站建设