站长资源
全栈工程师站点

织梦dedecms让顶级导航自动跳转到第一个子栏目

方法有两种,一种通过JS跳转来实现,简单粗暴。第二种通过修改织梦源代码实现,有一定难度。具体选择哪个纯看个人洗好,跳转的话对优化会有点影响,不过少量站内跳也无所谓,毕竟很多兼容的手机站也会自动跳,百度也是允许的。

方法一:

新建一个jump_url.htm文件,然后将一级栏目的栏目属性设置为封面页。并将封面模版更改为jump_url.htm。
将以下代码复制到该文件中即可。

<script>
	{dede:channel type='son' row='1'}
		window.location.href='[field:typelink /]';
	{/dede:channel}
</script>

方法二:

修改源码来简单实现,其实DEDECMS在数据库表@#_arctype中,是否为频道,是用ispart这个字段去保存的,它有3个值(0,-1,1),对应的网站后台的 频道封面、最终栏目、外部连接。
所以我们只需要在程序中对ispart进行一个简单的判断,就OK。废话不多说了,

第一步:打开/include/helpers/channelunit.helper.php 找到下面的代码  GetOneTypeUrlA函数

function GetOneTypeUrlA($typeinfos)
{
	return GetTypeUrl($typeinfos['id'],MfTypedir($typeinfos['typedir']),$typeinfos	['isdefault'],$typeinfos['defaultname'],
	$typeinfos['ispart'],$typeinfos['namerule2'],$typeinfos['moresite'],$typeinfos	['siteurl'],$typeinfos['sitepath']);
}

改为

function GetOneTypeUrlA($typeinfos)

{

   global $dsql;

    if($typeinfos['ispart']==1) {

      $typeinfos = $dsql->GetOne('select * from idea_arctype where reid='.$typeinfos['id'].'

          ORDER BY sortrank');

  }

   return GetTypeUrl($typeinfos['id'],MfTypedir($typeinfos['typedir']),

$typeinfos['isdefault'],$typeinfos['defaultname'],

  $typeinfos['ispart'],$typeinfos['namerule2'],

$typeinfos['moresite'],$typeinfos['siteurl'],$typeinfos['sitepath']);

}

就这样OK了~! 但是这样频道封面就没有用了,其实我们还可以去给ispart增加一个其它的值,比如“2”来代表需要跳转到第一个子栏目的,把程序中的$typeinfos[‘ispart’]==1改成$typeinfos[‘ispart’]==2就OK了

以上方法网上找的,不行。列表页的链接不对了。
自己研究了一下 include/taglib/channelartlist.lib.php  line85增加一个if判断,搞定!!

while($row = $dsql->GetArray()) {
	if($row["ispart"]==1&&$row["reid"]==0){// 当栏目为单页,且为顶级栏目调用第一个子栏目链接。
$row1 = $dsql->GetOn("select reid,id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath from #@__arctype where reid='".$row['id']."' ORDER BY sortrank ASC");
	if(!empty($row1)){//有子类,没有不作操作
		$row['defaultname']=$row1['defaultname'];
	}

}
	$typeids[] = $row;
}

本文出处:来自互联网信息共享,请勿相信收费信息站长资源 » 织梦dedecms让顶级导航自动跳转到第一个子栏目

评论 1

评论前必须登录!

 

  1. #-9

    这样精彩的博客越来越少咯!

    中青看点1年前 (2017-12-15)