|
进入当前栏目后,当前栏目的导航标题就不显示,这个怎么解决啊?
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后的代码,问题解决。
|
|