dede5.7 动态导航下拉菜单的实现代码
发布时间:2018-02-13
1.修改 include下面taglib文件夹里的channel.lib.php文件 替换成我的 复制代码代码如下: CAttribute->Items,$attlist); extract($ctag->CAttribute->Items, EXTR_SKIP); $innertext = $ctag->GetInnerText(); 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("Select reid From `dede_arctype` where id='$typeid' "); if(is_array($dbrow)) $reid = $dbrow<'reid'>; } $likeType = ''; if($type=='top') { $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,description From `dede_arctype` where reid=0 And ishidden1 order by sortrank asc limit 0,$row"; } else if($type=="son") { //if($_sys_globals<'typeid'>>0) $typeid = $_sys_globals<'typeid'>; if($typeid==0) { return ''; } $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,description From `dede_arctype` where reid='$typeid' And ishidden1 order by sortrank asc limit 0,$row"; } else if($type=="self") { if($reid==0) { return ''; } $sql = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,description From `dede_arctype` where reid='$reid' And ishidden1 order by sortrank asc limit 0,$row"; } //And id'$typeid' $dtp2 = new DedeTagParse(); $dtp2->SetNameSpace("field","<",">"); $dtp2->LoadSource($innertext); $dsql2 = clone $dsql; $dsql->SetQuery($sql); $dsql->Execute(); $line = $row; $GLOBALS<'autoindex'> = 0; for($i=0;$i 1) $likeType .= "\r\n"; for($j=0;$j1) $likeType .= "\r\n"; if($row=$dsql->GetArray()) { if($type=='self' && $row<'id'>==$typeid) //处理同级栏目中,当前栏目的样式 { if($currentstyle!='') { $linkOkstr = $currentstyle; $row<'typelink'> = GetOneTypeUrlA($row); $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->CTags as $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 .= "\r\n"; $GLOBALS<'autoindex'>++; }//Loop Col if($col>1) { $i += $col - 1; $likeType .= " \r\n"; } }//Loop for $i reset($dsql2); $dsql->FreeResult(); return $likeType; } function lib_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 = "Select id,typename,typedir,isdefault,ispart,defaultname,namerule2,description From `dede_arctype` where reid='$typeid' And ishidden1 order by sortrank asc limit 0,$row"; //And id'$typeid' $dtp2 = new DedeTagParse(); $dtp2->SetNameSpace("field","<",">"); $dtp2->LoadSource($innertext); $dsql2->SetQuery($sql); $dsql2->Execute(); $line = $row; for($i=0;$i 1) $likeType .= "\r\n"; for($j=0;$j1) $likeType .= "\r\n"; if($row=$dsql2->GetArray()) { $row<'typelink'> = $row<'typeurl'> = GetOneTypeUrlA($row); if(is_array($dtp2->CTags)) { foreach($dtp2->CTags as $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 .= "\r\n"; }//Loop Col if($col>1) { $i += $col - 1; $likeType .= " \r\n"; } }//Loop for $i reset($dsql3); $dsql2->FreeResult(); return $likeType; } ?> 2.调用 这是我调用的代码 复制代码代码如下: {dede:channel typeid='1'} <*> >



<*>> {/dede:channel} 文章来源
更多文章 进入论坛 我要发帖