DEDECMS 5.7在使用过程中确实存在不少问题,尤其是地区联动功能方面。虽然之前解决了无法联动的问题,但后来发现即使联动正常显示,保存后却只保留了两级栏目,第三级栏目丢失。这无疑是一个让人头疼的问题。
为了解决这个问题,经过长时间的研究和资料查阅,终于找到了一个可行的解决方案:
第一步:
打开文件 /include/enums.func.php,找到 GetEnumsJs 方法。
将以下代码中的 $valKey = $matchs[1] + $matchs[2] / 1000; 替换为 $valKey = $matchs[1] + $matchs[2] / 10;
$valKey = $matchs[1] + $matchs[2] / 10;
之所以需要这样修改,是因为官方默认算法生成的城市标识与实际数据不匹配。例如,第三级城市的 ID 应该是 60.1,但系统生成的是 60.0001,这种误差导致数据无法正确保存。
第二步:
进入 DEDECMS 后台,找到会员模型下的“目前所在地”(place)和“家乡所在地”(oldplace)字段,将它们的数据类型从整数更改为小数类型。
这一修改确保保存时能够完整保留小数部分,从而避免前台显示仅到二级目录的问题。
完成上述两步操作后,再次测试应该可以正常显示并保存三级联动数据。
令人困惑的是,DEDECMS 5.7 已经发布许久,但关于此类问题的解决方法在网络上却鲜有提及。希望通过本文的分享,能帮助更多用户快速定位并解决问题。
如果您在实施过程中遇到任何困难,请随时留言交流!
注意:在进行任何修改前,请务必备份相关文件,以免发生意外情况影响网站正常运行。