新乡闫锦网络科技有限公司 网站模板下载 网站定制

您现在的位置:主页 > 公司新闻 > 建站教程 > 织梦channelartlist循环读取下级栏目、内容

织梦channelartlist循环读取下级栏目、内容

  • 文章内容
  • 用户评价

代码如下:

{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’时则当前栏目没有子栏目时,不读取同级栏目。

{dede:channelartlist typeid = 3} 
<li class="sub_ul1_li"><a href="{dede:field name='typeurl'/}" class="publica">{dede:field name='typename'/}</a> 
<ul class="sub_ul2 hide"> 
{dede:channel type='son' noself='yes'} 
<li><a href="[field:typelink/]" class="publica">·[field:typename/]</a></li> 
{/dede:channel} 
</ul> 
</li> 
{/dede:channelartlist} 

这段代码的意思是查询栏目id为3的子栏目然后在查询子栏目的子栏目。效果如图所示:

但是这样会出现一个问题,就是如果该栏目没有子栏目的话,就会取他的同级栏目,那么如何解决{dede:channel type='son'}无子栏目时取同级栏目问题呢?

其实很简单:

打开:include\taglib\channel.lib.php文件。
找到
if($type=='son' && $reid!=0 && $totalRow==0)
改成
if($type=='son' && $reid!=0 && $totalRow==0 && $noself=='')

这样就对了。

声明:本站所有织梦模板/文章除标明原创外,均来自网络转载,版权归原作者所有,如果有侵犯到您的权益,请联系本站删除 网站管理员QQ:3078828304

收缩