dede5.7 动态导航下拉菜单的实现代码
php  /  管理员 发布于 8年前   240
1.修改 include下面taglib文件夹里的channel.lib.php文件 替换成我的
复制代码代码如下:
<?php
function lib_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();
    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 <a href="https:/cms/mailto:`dede_arctype">`dede_arctype</a>` 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 <a href="https:/cms/mailto:`dede_arctype">`dede_arctype</a>` where reid=0 And ishidden<>1 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 <a href="https:/cms/mailto:`dede_arctype">`dede_arctype</a>` where reid='$typeid' And ishidden<>1 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 <a href="https:/cms/mailto:`dede_arctype">`dede_arctype</a>` where reid='$reid' And ishidden<>1 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 < $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())
{
    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 .= "</dd>\r\n";
$GLOBALS['autoindex']++;
        }//Loop Col
        if($col>1)
        {
$i += $col - 1;
$likeType .= "    </dl>\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 <a href="https:/cms/mailto:`dede_arctype">`dede_arctype</a>` where reid='$typeid' And ishidden<>1 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 < $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->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 .= "</dd>\r\n";
        }//Loop Col
        if($col>1)
        {
$i += $col - 1;
$likeType .= "    </dl>\r\n";
        }
    }//Loop for $i
    reset($dsql3);
    $dsql2->FreeResult();
    return $likeType;
}
?>
2.调用
这是我调用的代码 
复制代码代码如下:
{dede:channel typeid='1'}
     <li>
      <a class="" href="https:/cms/[field:typeurl/]" title="">[field:typename/]
      <img src="https:/cms/***.gif" /></a>
      <div class="sub">
       <ul>
        [field:sonchannel0]<li><a href="https:/cms/[field:typeurl/]">[field:typename/]</a></li>[/field:sonchannel0]
       </ul>
      </div>
     </li>
    {/dede:channel}
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
			Copyright·© 2019 侯体宗版权所有·
			粤ICP备20027696号
			 
			
