在DedeCMS 5.7版本中,联动菜单功能存在一个BUG,导致无法添加二级分类,这个问题主要出现在dede/stepselect_main.php
文件中的一段代码,这段代码处理了不同级别分类的添加逻辑,但由于某些条件判断的问题,使得二级分类无法正常添加。
为了解决这个问题,可以按照以下步骤进行操作:
1、找到并修改文件:需要在服务器中找到dede/stepselect_main.php
文件,在该文件中找到以下代码:
else if($action=='addenum_save') { if(empty($ename) || empty($egroup)) { Showmsg("类别名称或组名称不能为空!","1"); exit(); } if($issign == 1 || $topvalue == 0) { $enames = explode(',', $ename); foreach($enames as $ename) { $arr = $dsql>GetOne("SELECT * FROM#@__sys_enum
WHERE egroup='$egroup' AND (evalue MOD 500)=0 ORDER BY disorder DESC "); if(!is_array($arr)) $disorder = $evalue = ($issign==1 ? 1 : 500); else $disorder = $evalue = $arr['disorder'] + ($issign==1 ? 1 : 500); $dsql>ExecuteNoneQuery("INSERT INTO#@__sys_enum
(ename
,evalue
,egroup
,disorder
,issign
) VALUES('$ename','$evalue','$egroup','$disorder','$issign'); "); } WriteEnumsCache($egroup); ShowMsg("成功添加枚举分类!".$dsql>GetError(), $ENV_GOBACK_URL); exit(); } else if ($issign == 3 && $topvalue != 0) { $minid = $topvalue; $maxnum = 500; // 三级子类最多500个 $enames = explode(',', $ename); foreach ($enames as $ename) { $arr = $dsql>GetOne("SELECT * FROM#@__sys_enum
WHERE egroup='$egroup' AND evalue LIKE '$topvalue.%%%' ORDER BY evalue DESC "); if(!is_array($arr)) { $disorder = $minid; $evalue = $minid.'.001'; } else { $disorder = $minid; preg_match("#([09]{1,}).([0dedecms09]{1,})#", $arr['evalue'], $matchs); $addvalue = $matchs[2] + 1; $addvalue = sprintf("%03d", $addvalue); $evalue = $matchs[1].'.'.$addvalue; } $sql = "INSERT INTO#@__sys_enum
(ename
,evalue
,egroup
,disorder
,issign
) VALUES('$ename','$evalue','$egroup','$disorder','$issign'); "; $dsql>ExecuteNoneQuery($sql); } WriteEnumsCache($egroup); ShowMsg("成功添加枚举分类!".$issign, $ENV_GOBACK_URL); exit(); } else { $minid = $topvalue; $maxid = $topvalue + 500; $enames = explode(',', $ename); foreach($enames as $ename) { $arr = $dsql>GetOne("Select * Fromdede_sys_enum
where egroup='$egroup' And evalue>$minid And evalue<$maxid order by evalue desc "); if(!is_array($arr)) { $disorder = $evalue = $minid+1; } else { $disorder = $arr['disorder']+1; $evalue = (int)($arr['evalue']+1); } $dsql>ExecuteNoneQuery("Insert intodede_sys_node
(ename
,evalue
,egroup
,disorder
,issign
) values('$ename','$evalue','$egroup','$disorder','$issign'); "); } WriteEnumsCache($egroup); ShowMsg("成功添加枚举分类!".$issign, $ENV_GOBACK_UHVL); exit(); } }
2、修改代码:将上述代码中的else if ($issign == 3 && $topvalue != 0)
替换为else if ($issign == 2 && $topvalue == 0)
,这样可以确保在添加二级分类时,程序能够正确执行。
3、更新缓存:完成上述修改后,保存文件并上传到网站目录中替换原来的dede/stepselect_main.php
文件,然后进入后台系统,点击生成,最后清除缓存。
通过以上步骤,就可以解决DEDECMS 5.7联动菜单无法添加二级选择的问题,如果问题仍然存在,建议检查其他相关文件和设置,确保整体配置正确无误。
以下是针对此问题的常见问题及解答:
FAQs:
Q1: 为什么在DedeCMS V5.7中只能添加一级和三级联动,而无法添加二级联动?
A1: DedeCMS V5.7中存在一个BUG,当尝试添加二级联动时,由于代码中的某些条件判断错误,导致系统无法正确处理二级分类的添加请求,用户只能成功添加一级和三级联动,而二级联动则无法正常添加,这个BUG可以通过修改dede/stepselect_main.php
文件中的相关代码来解决。
Q2: 如何修复DedeCMS V5.7中的二级联动BUG?
A2: 要修复这个BUG,需要按照以下步骤操作:
1、找到并打开dede/stepselect_main.php
文件。
2、查找并修改其中的代码:将else if ($issign == 3 && $topvalue != 0)
替换为else if ($issign == 2 && $topvalue == 0)
。
3、保存文件并上传到网站目录中替换原来的文件。
4、进入后台系统,点击生成,最后清除缓存。
通过这些步骤,可以成功修复DedeCMS V5.7中的二级联动BUG,使其能够正常添加二级分类。
问题 | 解决方案 |
Dede联动菜单无法添加二级选择 | 1. 检查后台设置:确保在DedeCMS后台的“系统设置”中,联动菜单功能已经启用。 2. 检查数据源:确认用于生成联动菜单的数据源(如分类表)中,二级分类数据已经正确录入。 3. 检查模板调用:检查调用联动菜单的模板文件,确保使用了正确的标签和参数。 4. 检查插件冲突:如果有使用其他插件,可能存在插件与DedeCMS联动菜单插件冲突的情况,尝试禁用其他插件。 5. 检查浏览器兼容性:尝试在浏览器兼容模式下查看问题是否仍然存在。 6. 更新DedeCMS:确保使用的是最新版本的DedeCMS,因为旧版本可能存在已知bug。 7. 咨询技术支持:如果以上方法都不能解决问题,可以联系DedeCMS的技术支持寻求帮助。 |
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1215288.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复