今天我就来说说用如果通过修改源码来简单实现,其实DEDECMS在数据库表@#_arctype中,是否为频道,是用ispart这个字段去保存的,它有3个值(0,-1,1),对应的网站后台的 频道封面、最终栏目、外部连接。
所以我们只需要在程序中对ispart进行一个简单的判断,就OK。废话不多说了,
第一步:打开/include/helpers/channelunit.helper.php 打开下面的代码 GetOneTypeUrlA函数
/** * 获取某栏目的url * * @param array $typeinfos 栏目信息 * @return string */ function GetOneTypeUrlA($typeinfos) { return GetTypeUrl($typeinfos['id'],MfTypedir($typeinfos['typedir']),$typeinfos['isdefault'], $typeinfos['defaultname'],$typeinfos['ispart'],$typeinfos['namerule2'], $typeinfos['moresite'],$typeinfos['siteurl'],$typeinfos['sitepath']); }
第二步:对这个GetOneTypeUrlA函数进行修改,修改后如下
/** * 获取某栏目的url * * @param array $typeinfos 栏目信息 * @return string */ 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了。
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!