DEDE5.6,DEDE5.7如何实现同时调用一级、二级、三级栏目

春季是一个富有生命力季节,也是一个美丽、神奇,充满希望季节。柳树枝条向下垂着,就似一条条线挂树上。春季景色十分美丽,就似一幅栩栩如生画。

一、修改文件:\include\taglib目录下的channel.lib.php,请将以下代码全部复制替换上述文件

<?php functionlib_channel(&$ctag,&$refObj) { global$_sys_globals,$envs,$dsql; $attlist="typeid|0,reid|0,row|100,col|1,type|son,currentstyle|"; FillAttsDefault($ctag->CAttribute->Items,$attlist); extract($ctag->CAttribute->Items,EXTR_SKIP); $innertext=$ctag->GetInnerText(); $cacheid=trim($cacheid); if($cacheid!=''){ $likeType=GetCacheBlock($cacheid); if($likeType!='')return$likeType; } $reid=0; $topid=0; if(empty($typeid)&&$envs['typeid']!=0) { $typeid=$envs['typeid']; $reid=$envs['reid']; }else{ $reid=0; } if($type==''||$type=='sun')$type="son"; if($innertext=='')$innertext=GetSysTemplets("channel_list.htm"); if($reid==0&&$typeid>0) { $dbrow=$dsql->GetOne("SelectreidFromdede_arctypewhereid='$typeid'"); if(is_array($dbrow))$reid=$dbrow['reid']; } $likeType=''; if($type=='top') { $sql="Selectid,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description Fromdede_arctypewherereid=0Andishidden<>1orderbysortrankasclimit0,$row"; } elseif($type=="son") { //if($_sys_globals['typeid']>0)$typeid=$_sys_globals['typeid']; if($typeid==0){ return''; } $sql="Selectid,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description Fromdede_arctypewherereid='$typeid'Andishidden<>1orderbysortrankasclimit0,$row"; } elseif($type=="self") { if($reid==0){ return''; } $sql="Selectid,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description From`dede_arctype`wherereid='$reid'Andishidden<>1orderbysortrankasclimit0,$row"; } //Andid<>'$typeid' $needRel=false; $dtp2=newDedeTagParse(); $dtp2->SetNameSpace("field","[","]"); $dtp2->LoadSource($innertext); $dsql2=clone$dsql; $dsql->SetQuery($sql); $dsql->Execute(); $line=$row; //检查是否有子栏目,并返回rel提示(用于二级菜单) if(ereg(':rel',$innertext))$needRel=true; if(empty($sql))return''; $dsql->SetQuery($sql); $dsql->Execute(); $totalRow=$dsql->GetTotalRow(); $GLOBALS['autoindex']=0; for($i=0;$i<$line;$i++) { if($col>1)$likeType.="<dl>\r\n"; for($j=0;$j<$col;$j++) { if($col>1)$likeType.="<dd>\r\n"; if($row=$dsql->GetArray()) { $row['sonids']=$row['rel']=''; if($needRel) { $row['sonids']=GetSonIds($row['id'],0,false); if($row['sonids']=='')$row['rel']=''; else$row['rel']="rel='dropmenu{$row['id']}'"; } //处理同级栏目中,当前栏目的样式 if(($row['id']==$typeid||($topid==$row['id']&&$type=='top'))&&$currentstyle!='') { if($currentstyle!='') { $linkOkstr=$currentstyle; $row['typelink']=GetOneTypeUrlA($row); $linkOkstr=str_replace("~rel~",$row['rel'],$linkOkstr); $linkOkstr=str_replace("~id~",$row['id'],$linkOkstr); $linkOkstr=str_replace("~typelink~",$row['typelink'],$linkOkstr); $linkOkstr=str_replace("~typename~",$row['typename'],$linkOkstr); $likeType.=$linkOkstr; } }else { $row['typelink']=$row['typeurl']=GetOneTypeUrlA($row); if(is_array($dtp2->CTags)) { foreach($dtp2->CTagsas$tagid=>$ctag){ if(isset($row[$ctag->GetName()])) { $dtp2->Assign($tagid,$row[$ctag->GetName()]); } elseif(preg_match('/^sonchannel[0-9]*$/',$ctag->GetName())) { $dtp2->Assign($tagid,lib_channel_son($ctag,$row['id'],$dsql2)); } } } $likeType.=$dtp2->GetResult(); } } if($col>1)$likeType.="</dd>\r\n"; $GLOBALS['autoindex']++; }//LoopCol if($col>1) { $i+=$col-1; $likeType.="</dl>\r\n"; } }//Loopfor$i reset($dsql2); $dsql->FreeResult(); return$likeType; } functionlib_channel_son($ctag,$typeid=0,$dsql2) { $attlist="row|100,col|1,currentstyle|"; FillAttsDefault($ctag->CAttribute->Items,$attlist); extract($ctag->CAttribute->Items,EXTR_SKIP); $innertext=$ctag->GetInnerText(); $dsql3=clone$dsql2; $likeType=''; //if($_sys_globals['typeid']>0)$typeid=$_sys_globals['typeid']; if($typeid==0){ return''; } $sql="Selectid,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath,description Fromdede_arctypewherereid='$typeid'Andishidden<>1orderbysortrankasclimit0,$row"; //Andid<>'$typeid' $dtp2=newDedeTagParse(); $dtp2->SetNameSpace("field","[","]"); $dtp2->LoadSource($innertext); $dsql2->SetQuery($sql); $dsql2->Execute(); $line=$row; for($i=0;$i<$line;$i++) { if($col>1)$likeType.="<dl>\r\n"; for($j=0;$j<$col;$j++) { if($col>1)$likeType.="<dd>\r\n"; if($row=$dsql2->GetArray()) { $row['typelink']=$row['typeurl']=GetOneTypeUrlA($row); if(is_array($dtp2->CTags)) { foreach($dtp2->CTagsas$tagid=>$ctag){ if(isset($row[$ctag->GetName()])) { $dtp2->Assign($tagid,$row[$ctag->GetName()]); } elseif(preg_match('/^sonchannel[0-9]*$/',$ctag->GetName())) { $dtp2->Assign($tagid,lib_channel_son($ctag,$row['id'],$dsql3)); } } } $likeType.=$dtp2->GetResult(); } if($col>1)$likeType.="</dd>\r\n"; }//LoopCol if($col>1) { $i+=$col-1; $likeType.="</dl>\r\n"; } }//Loopfor$i reset($dsql3); $dsql2->FreeResult(); return$likeType; } ?>

二、在模板调用 实例:

{dede:channeltype='son'typeid='22'} [field:typename/] <ul> [field:sonchannel0] <li><ahref="http://www.dede58.com/[field:typelink/]">[field:typename/]</a></li> [field:sonchannel1] <li><ahref="http://www.dede58.com/[field:typelink/]">---[field:typename/]</a></li> [field:sonchannel2] <li><ahref="http://www.dede58.com/[field:typelink/]">===[field:typename/]</a></li> [field:sonchannel3] <li><ahref="http://www.dede58.com/[field:typelink/]">===[field:typename/]</a></li> [/field:sonchannel3] [/field:sonchannel2] [/field:sonchannel1] [/field:sonchannel0] </ul> {/dede:channel}

模板调用 [field:sonchannel0] [/field:sonchannel0] 这个是用来取子栏目用得(使用[sonchannel+数字] 作为标签名是为了防止嵌套的时候无法正确解析标签)

这个的作用就是当你的栏目有很多子栏目 无限分级的时候方便你取子栏目的

本文DEDE5.6,DEDE5.7如何实现同时调用一级、二级、三级栏目到此结束。人的生命恰似一部小说,其价值在于贡献而不在于短长。小编再次感谢大家对我们的支持!

您可能有感兴趣的文章
织梦后台文档列表添加复制文档功能支持所有模型

织梦无法上传ico图标格式文件的如何解决方法

dedecms如何实现任意页面调用当前会员信息的方

织梦dede:tag调用指定多个栏目的TAG标签

织梦栏目列表按附加表自定义字段排序