解决方案
在DEDECMS 5.7版本中,会员中心地区联动第三级无法显示的问题主要源于数据类型不匹配和枚举表中evalue值错误,以下是详细的解决步骤:
1、修改数据类型:
打开后台的SQL命令行工具,执行以下SQL语句将dede_addoninfos
表的nativeplace
字段从int型改为char型:
ALTER TABLE dede_addoninfos CHANGE nativeplace nativeplace CHAR(20) NOT NULL DEFAULT '0';
如果使用的是其他模型,请相应地修改附加表名。
2、修正枚举表evalue值:
打开/include/enums.func.php
文件,找到如下代码段:
foreach($egroups as $egroup) { }
在这段代码上方添加以下代码:
if($egroup == 'nativeplace' || $egroups['nativeplace'] == 'nativeplace') { $dsql>SetQuery("SELECT id, evalue FROMdede_sys_enum
WHERE egroup='nativeplace'"); $dsql>Execute(); while($row = $dsql>GetArray()) { $res[] = $row; } foreach($res as $k=>$v) { if(preg_match("#([09]{1,}).([09]{1,})#", $v['evalue'], $matchs)) { $valKey = $matchs[1] + $matchs[2] / 1000; $v['evalue'] = $valKey; $sql = "UPDATEdede_sys_enum
SET evalue=".$v['evalue']." WHERE id=".$v['id']; $dsql>ExecuteNoneQuery($sql); } } }
保存文件后,进入后台的“联动类别管理”,更新【地区】的缓存。
3、覆盖文件并清空缓存:
下载最新的infolink.lib.php
文件,覆盖到/include/taglib/
目录下。
清空浏览器临时文件,刷新后台页面,重新编辑和添加文档,保存。
4、检查路径问题:
如果问题仍未解决,检查/include/customfields.func.php
文件中的路径设置,确保第424行和第427行的路径正确:
src="'.$cmspath.'images/enums.js" 修改为: src="'.$cmspath.'/images/enums.js"
同样在第427行进行类似修改:
{$cmspath}data/enums/{$fieldname}.js 修改为: {$cmspath}/data/enums/{$fieldname}.js
保存文件后,再次尝试。
通过以上步骤,可以有效地解决DEDECMS 5.7会员中心地区联动第三级无法显示的问题,如果仍有问题,建议进一步检查数据库配置和文件权限。
相关问答FAQs
1、为什么修改数据类型后仍然无法保存小数点?
答:如果在修改数据类型后仍然无法保存小数点,可能是因为缓存未清空或文件未正确覆盖,请确保已清空浏览器缓存并覆盖了正确的文件,检查SQL语句是否正确执行,可以通过手动执行SQL语句来确认。
2、如何验证解决方案是否有效?
答:验证解决方案是否有效的方法是重新进入会员中心,选择地区联动,查看第三级城市是否能够正常显示和保存,如果不能正常显示,请检查上述步骤是否正确执行,特别是SQL语句和文件覆盖部分。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1218544.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复