当前位置:首页 > 行业动态 > 正文

为什么在使用DedeCMS时无法成功添加二级选择到联动菜单中?

DedeCMS 的联动菜单无法添加二级选择可能是因为模板或代码设置问题。建议检查模板文件和相关配置,确保正确设置。

在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的技术支持寻求帮助。
0