在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’时则当前栏目没有子栏目时,不读取同级栏目。
真实案例详见我公司网站作品: 哈尔滨天地人装饰工程有限公司
哈尔滨品用软件有限公司致力于为哈尔滨的中小企业制作大气、美观的优秀网站,并且能够搭建符合百度排名规范的网站基底,使您的网站无需额外费用,即可稳步提升排名至首页。欢迎体验最佳的哈尔滨网站建设。