电脑计算机论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1578|回复: 0

dedecms的当前栏目(导航栏)不显示现象的解决办法

[复制链接]
admin 发表于 2012-1-15 23:24:11 | 显示全部楼层 |阅读模式
进入当前栏目后,当前栏目的导航标题就不显示,这个怎么解决啊?
dedecms在设计上有一个地方不是让自己很满意,就是进入相关频道,如果通过channel标签调用顶级栏目时候,进入相应栏目后会出现当前栏目的项目被隐藏不显示的现象,今天教大家如何解决这个不舒服的功能。
dedecms的栏目调用基本上都写在一个叫inc_typelink.php,这个文件在/include文件夹下。(也有的版本没有inc_typelink.php这个文件,这种情况见后面也有解决办法)
dedecms的channel标签获取列表是通过GetChannelList这个函数获得的,GetChannelList函数所在文件inc_typelink.php
找到函数【文件第236行】
//----------------------------
//获得与该类相关的类目,本函数应用于模板标记{dede:channel}{/dede:channel}中
//$typetype 的值为: sun 下级分类 self 同级分类 top 顶级分类
//-----------------------------
function GetChannelList($typeid=0,$reID=0,$row=8,$typetype='sun',$innertext='',
$col=1,$tablewidth=100,$myinnertext='')
找到关键部分代码
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
        //处理同级栏目中,当前栏目的样式
        if($typetype=="self" && $row['ID']=="$typeid"){
           if($myinnertext!=''){
             $linkOkstr = $myinnertext;
             $row['typelink'] = $this->GetOneTypeUrl($row);
             $linkOkstr = str_replace("~typelink~",$row['typelink'],$linkOkstr);
             $linkOkstr = str_replace("~typename~",$row['typename'],$linkOkstr);
             $likeType .= $linkOkstr;
           }
        }else{//非当前栏目
          $row['typelink'] = $this->GetOneTypeUrl($row);
          if(is_array($dtp2->CTags)){
            foreach($dtp2->CTags as $tagid=>$ctag)
            { if(isset($row[$ctag->GetName()])) $dtp2->Assign($tagid,$row[$ctag->GetName()]); }
          }
          $likeType .= $dtp2->GetResult();
        }
在这里我们只需要将   if($typetype=="self" && $row['ID']=="$typeid")这段处于统计栏目的代码删除即可,即变成
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
//非当前栏目
          $row['typelink'] = $this->GetOneTypeUrl($row);
          if(is_array($dtp2->CTags)){
            foreach($dtp2->CTags as $tagid=>$ctag)
            { if(isset($row[$ctag->GetName()])) $dtp2->Assign($tagid,$row[$ctag->GetName()]); }
          }
          $likeType .= $dtp2->GetResult();
保存,完成修改,测试下,OK

另注: 没有inc_typelink.php这个文件时的解决办法:
  进入网站后台-模版-标签源码管理-channel.lib.php-编辑:
将其中的:
//处理同级栏目中,当前栏目的样式
    if( ($row['id']==$typeid || ($topid==$row['id'] && $type=='top') ) && $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
    {......


将上面代码中的if { ...... } else  删除掉,也就是不管是不是满足if条件,都执行else后的代码,问题解决。  




您需要登录后才可以回帖 登录 | 注册

本版积分规则


QQ|手机版|小黑屋|电脑计算机论坛 ( 京ICP备2022023538号-1 )

GMT+8, 2024-12-28 01:49 , Processed in 0.099029 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表