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

为什么dede联动菜单无法添加二级选择?

dede联动菜单无法添加二级选择可能是由于设置或代码问题。请检查联动菜单的设置和相关代码,确保正确配置。如果问题仍然存在,可能需要进一步排查或寻求专业帮助。

在DedeCMS 5.7版本中,许多用户在使用联动菜单时遇到了无法添加二级分类的问题,这通常由于源码中的一个BUG导致,只能成功添加一级和三级分类,而二级分类的添加却受到了限制,以下是解决这一问题的方法:

为什么dede联动菜单无法添加二级选择?  第1张

修改dede/stepselect_main.php 文件

1、定位问题代码

打开dede/stepselect_main.php 文件,找到以下代码段:

“`php

else if($action==’addenum_save’)

{

if(emptyempty($ename) || emptyempty($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,}).([09]{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 * From#@__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 into#@__sys_enum(ename,evalue,egroup,disorder,issign) values(‘$ename’,’$evalue’,’$egroup’,’$disorder’,’$issign’); ");

}

WriteEnumsCache($egroup);

ShowMsg("成功添加枚举分类!".$issign, $ENV_GOBACK_URL);

exit();

}

}

“`

2、进行代码修改

将上述代码中的第14行和第28行分别修改为:

“`php

if(!is_array($arr)) $disorder = $evalue = ($issign==1 ? 1 : 500);

“`

改为:

“`php

if(!is_array($arr)) $disorder = $evalue = ($issign==1 ? 1 : 500) 1;

“`

以及:

“`php

if(!is_array($arr))

{

$disorder = $minid;

$evalue = $minid.’.001′;

}

“`

改为:

“`php

if(!is_array($arr))

{

$disorder = $minid 1;

$evalue = $minid.’.001′;

}

“`

3、保存并更新缓存

保存对dede/stepselect_main.php 文件的修改,然后在系统后台更新系统缓存,这样,在后台的联动类别管理中就可以正常添加二级选择了。

修改dede/templets/stepselect_main.htm 文件

1、定位问题代码

打开dede/templets/stepselect_main.htm 文件,找到以下代码段:

“`php

if($topvalue % 500 != 0) $arr[‘issign’] = 2;

“`

2、进行代码修改

将上述代码修改为:

“`php

if($topvalue % 500 != 0) $arr[‘issign’] = 3;

if($topvalue % 500 == 0) $arr[‘issign’] = 2;

“`

3、保存并更新缓存

保存对dede/templets/stepselect_main.htm 文件的修改,然后在系统后台更新系统缓存,这样,在后台的联动类别管理中就可以正常添加二级选择了。

通过以上步骤,可以有效解决DedeCMS 5.7中无法添加二级联动菜单的问题,如果仍有其他疑问或遇到新的问题,建议参考官方文档或社区论坛获取更多帮助。

Dede联动菜单无法添加二级选择的解决方法

1. 问题分析

在DedeCMS中,当尝试添加二级选择到联动菜单时,可能遇到无法添加的情况,这通常是由于以下几个原因造成的:

配置问题:后台配置设置不正确。

代码错误:模板或插件代码中存在错误。

数据库问题:数据库中的数据结构或数据存在问题。

2. 解决步骤

步骤一:检查后台配置

1、登录DedeCMS后台。

2、进入“系统设置” > “系统参数”。

3、确认“启用联动菜单”选项是否被勾选。

4、检查“联动菜单数据缓存时间”设置是否合理。

步骤二:检查模板代码

1、打开包含联动菜单的模板文件。

2、检查模板中调用联动菜单的代码是否符合DedeCMS的规范。

3、确认模板中的联动菜单代码没有错误。

步骤三:检查插件或自定义代码

1、如果使用了第三方插件或自定义代码,检查这些代码是否与联动菜单有冲突。

2、确认插件或自定义代码的版本与DedeCMS版本兼容。

步骤四:检查数据库

1、登录数据库管理工具。

2、检查联动菜单相关数据表的结构是否正确。

3、确认数据表中包含所有必要的字段和数据。

步骤五:重置联动菜单缓存

1、进入DedeCMS后台。

2、选择“系统设置” > “缓存管理”。

3、找到联动菜单缓存,并清除。

3. 验证与测试

1、保存所有更改后,刷新网站前端页面。

2、尝试再次添加二级选择到联动菜单。

3、如果问题仍然存在,可能需要进一步检查或寻求技术支持。

4. 归纳

通过上述步骤,通常可以解决DedeCMS联动菜单无法添加二级选择的问题,如果问题依旧存在,可能需要更深入的技术分析或寻求专业的技术支持。

0