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

打开/include/helpers/channelunit.helper.php 打开下面的代码  GetOneTypeUrlA函数

01 /**
02  *  获取某栏目的url
03  *
04  * @param     array  $typeinfos  栏目信息
05  * @return    string
06  */
07 function GetOneTypeUrlA($typeinfos)
08 {
09     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了。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。