最近在做一个网站的重构,之前的版本是用thinkphp写的,经历了三四个程序员的修改,现在后台已经无法添加文章,代码那叫一个乱,根本没法看,为了更好的优化这个网站,公司决定进行重构,

作为一个老站,要重构首先要注意的是url,标题这些要对应,一般的企业站大致分几类页面,

首页、频道页(关于,荣誉,理念...,产品大类...)、列表页、内容页

这其中的频道页跟列表页都是可以用dede的栏目来实现,可是经过细看,分析,老站中很多url或者说栏目地址文章地址都分配的不合理,比如,产品栏目页url是/product.html,但是产品详细地址又是/product/id.html这种,这就很纳闷了,

此时的解决办法是这样的,手动在根目录新建product文件夹(前提是这类栏目不多),然后栏目路径就根目录就行了,然后栏目的默认文档写成product.html,

此时需要在后台系统设置-核心设置-关闭栏目网址使用目录名”选项,此时通过dede:channel或者是position等标签调用出来的栏目路径就会包含默认文档,比如可以调用到/product.html。

然而,到这里并没有结束,那么我们又碰到一个栏目,在老站中的地址是/about/,这个栏目没有显示到html,而是目录,此时,我们调用出来之后会显示成了/about/index.html。这不符合我们的要求,我们需要修改一个文件,

/include/helpers/channelunit.helper.php

找到大约250行(dedev5.7),修改else的内容为

if($cfg_typedir_df=='N' || $isdefault==0){
	if($defaultname=='index.html'){//控制哪些文件名的不显示在栏目路径中
		$reurl = $typedir.'/';
	}else{
		$reurl = $typedir.'/'.$defaultname;
	}
}
else 
	$reurl = $typedir.'/';

这代码的意思是,当默认文档为“index.html”时,不显示默认文档,

到此,dede自定义栏目默认文档是否显示的功能已经实现,更新下栏目和文章去看下栏目还有position吧,