功能说明
织梦CMS(DedeCMS)是一个广泛使用的内容管理系统,但在其5.7版本中,存在一个与地区显示相关的问题,该问题主要体现在联动类型表单在前台的下拉菜单展现方式上,为了解决这一问题,可以通过增加一个JS文件并修改一个系统函数,将原Dede系统中的联动类型表单从普通的下拉菜单转换为联动菜单,由于DedeCMS最多只支持三级联动菜单,因此这一解决方案也仅支持三级联动。
安装方法
要实现上述功能,可以按照以下步骤进行:
1、备份文件:在覆盖之前,请先备份include/enums.func.php
文件,以防出错。
2、上传文件:将所需的JS文件直接上传至Dede根目录覆盖即可。
3、恢复文件:如果需要卸载,只需将之前备份的include/enums.func.php
重新上传恢复即可。
更新日志
以下是该解决方案的一些更新日志,包括修复和优化的内容:
1、兼容性问题:修复了后台表单不显示的问题。
2、二级联动消失问题:修复了在没有三级联动时,选择二级联动会消失本菜单的问题。
3、JS加载优化:优化了表单JS加载函数,使得同页面多个联动也只需载入一次JS文件。
4、美化效果:美化了多级联动菜单之间的间隔距离,以及在Firefox浏览器下的联动表单。
常见问题及解决方法
问题一:第三级城市不显示
原因可能有以下几点:
1、数据类型问题:附加表dede_addoninfos
或者你的其他表中的字段nativeplace
数据类型为int型,无法保存第三级城市对应的evalue值(东山区对应的10001.001)。
2、枚举表错误:枚举表dede_sys_enum
中的第三级城市对应evalue值错误(东山区应为10001.1,但实际应为10001.001)。
解决方法如下:
1、修改数据类型:将附加表dede_addoninfos
或者其他表中的字段nativeplace
的数据类型改为char型,可以在后台系统SQL命令行工具中执行以下语句:
ALTER TABLE dede_addoninfos CHANGE nativeplace nativeplace CHAR(20) NOT NULL DEFAULT '0'
注意:如果你使用的是其他模型,记得将表名改为相应的表名。
2、修正枚举表:打开/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);}}}}
在后台联动类别管理中更新一下【地区】的缓存即可。
FAQs
Q1: 为什么织梦CMS的地区显示会出现问题?
A1: 织梦CMS的地区显示问题主要是由于数据类型不匹配和枚举表中的错误导致的,默认情况下,附加表中的字段nativeplace
数据类型可能为int型,这会导致无法正确保存第三级城市的evalue值,枚举表中的evalue值也可能不正确,导致地区显示不准确。
Q2: 如何修复织梦CMS地区显示问题?
A2: 修复方法包括两步:将附加表中的字段nativeplace
的数据类型改为char型;修正枚举表中的evalue值,具体操作可以参考上述“修改数据类型”和“修正枚举表”的步骤。
Q3: 织梦CMS的联动菜单最多支持几级联动?
A3: 织梦CMS最多只支持三级联动菜单,这意味着在设置地区或其他分类时,最多只能设置到省、市、区(县)三级。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1192516.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复