找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1806|回复: 0

[分享] 织梦dede让频道自动跳转到第一个子栏目

[复制链接]
发表于 2018-3-16 14:53:57 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
平时做网站的时候,难免遇上一些特殊情况,默认的CMS是无法实现的,这时就需要改程序,就比如说,让频道自动跳转到第一个子栏目,当我还对DEDECMS不熟悉的时候,采用了一个非常笨的方法,用JS去跳转,这对优化非常不好。但是反正客户不懂,效果能实现就OK了。
今天我就来说说用如果通过修改源码来简单实现,其实DEDECMS在数据库表@#_arctype中,是否为频道,是用ispart这个字段去保存的,它有3个值(0,-1,1),对应的网站后台的 频道封面、最终栏目、外部连接。
所以我们只需要在程序中对ispart进行一个简单的判断,就OK。废话不多说了,

第一步:打开/include/helpers/channelunit.helper.php 打开下面的代码  GetOneTypeUrlA函数
  1. /**
  2. *  获取某栏目的url
  3. *
  4. * @param     array  $typeinfos  栏目信息
  5. * @return    string
  6. */
  7. function GetOneTypeUrlA($typeinfos)
  8. {
  9.     return GetTypeUrl($typeinfos['id'],MfTypedir($typeinfos['typedir']),$typeinfos['isdefault'],
  10. $typeinfos['defaultname'],$typeinfos['ispart'],$typeinfos['namerule2'],
  11. $typeinfos['moresite'],$typeinfos['siteurl'],$typeinfos['sitepath']);
  12. }
复制代码


第二步:对这个GetOneTypeUrlA函数进行修改,修改后如下
  1. /**
  2. *  获取某栏目的url
  3. *
  4. * @param     array  $typeinfos  栏目信息
  5. * @return    string
  6. */
  7. function GetOneTypeUrlA($typeinfos)
  8. {
  9.     global $dsql;
  10.     if($typeinfos['ispart']==1) {
  11.         $typeinfos = $dsql->GetOne('select * from idea_arctype where reid='.$typeinfos['id'].'
  12.             ORDER BY sortrank');
  13.     }
  14.     return GetTypeUrl($typeinfos['id'],MfTypedir($typeinfos['typedir']),
  15. $typeinfos['isdefault'],$typeinfos['defaultname'],
  16.     $typeinfos['ispart'],$typeinfos['namerule2'],
  17. $typeinfos['moresite'],$typeinfos['siteurl'],$typeinfos['sitepath']);
  18. }
复制代码


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

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

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

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-12-24 10:48 , Processed in 0.044992 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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