最近我的某个咨讯息网站需要改版,改为响应式设计,支持手机端访问,重新下载了PHPCMS最新版本: Phpcms V9.6.1 Release 20170412。
在二次开发过程中,设定二级栏目生成到根目录,然后三级栏目则无法访问的BUG,基本情况如下:
栏目设置如下:
一级栏目[生成到根目录(是)]> 二级栏目[生成到根目录(是)] > 三级栏目[生成到根目录(否)]
出现的问题是:
页面文件生成的路径是mysite/一级栏目/二级栏目/三级栏目/index.html;
但实际上页面生成的url地址是mysite/二级栏目/三级栏目/index.html;
2个地址不一致,导致三级栏目不能访问。
本来为了图省事,就去百度查了一下资料,但是提供的方法都过于复杂,测试也无效,所以没办法自己去排查,把重点放到生成目录这个环节,即 \phpcms\modules\content\create_html.php文件中的生成栏目函数category() , 这里又通过调用\phpcms\modules\content\classes\html.class.php中的category()生成最终的静态文件,所以重点就放在这个函数里。
果然,在208行加一个条件判断即可,如下:
//获取父级的配置,看是否生成静态,如果是动态则直接把父级目录调过来为生成静态目录所用
$parent_setting = string2array($CATEGORYS[$CAT['parentid']]['setting']);
if($parent_setting['ishtml']==0 && $setting['ishtml']==1){
$parentdir = $CATEGORYS[$CAT['parentid']]['catdir'].'/';
}
elseif($parent_setting['ishtml']==1 && $parent_setting['create_to_html_root']==1 && $setting['ishtml']==1 && && $CAT['create_to_html_root']==0){
//如果父级目录为生成到根目录,本目录为不生成到根目录,则使用父级目录,而不再理会父级目录的上级目录, 增加这三行
$parentdir = $CATEGORYS[$CAT['parentid']]['catdir'].'/';
}
然后测试,顺利生成页面,搞定。
这是我改过的地方,给遇到同样问题的人参考参考,改后暂时没发现什么问题。
有 946 条评论
评论:
国荣胜
2024-04-19 18:17顶顶顶顶顶顶 回复
买妍依
2024-04-15 09:19正需要,来的正好 回复
骑翎妍
2024-04-13 11:26感谢分享! 回复
门韬
2024-04-10 20:00这需要呢,来学习学习 回复
修博嘉
2024-04-09 02:35挺好 回复
隋嘉龙
2024-04-06 08:06非常有用,感谢分享 回复
厉政国
2024-04-04 14:52感谢无私分享 回复
表可意
2024-04-02 09:17非常有用,感谢分享 回复
衅桢国
2024-03-30 21:56谢分享~ 回复
戏璐染
2024-03-29 18:57顶顶顶顶顶顶 回复