修复phpcms v9二级栏目生成到根目录后三级栏目无法访问BUG

2017年4月26日 15:00 兜爸 浏览(9663) 评论(946)

最近我的某个咨讯息网站需要改版,改为响应式设计,支持手机端访问,重新下载了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'].'/';
}

然后测试,顺利生成页面,搞定。
这是我改过的地方,给遇到同样问题的人参考参考,改后暂时没发现什么问题。

版权申明

本文《修复phpcms v9二级栏目生成到根目录后三级栏目无法访问BUG》,由 兜爸网络工作室 于2017年4月26日15:00发表,共1096字,如非特别说明,皆为本工作室原创,转载请注明来源,谢谢!

有 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

顶顶顶顶顶顶 回复

发表评论