0712-2888027 189-8648-0214
微信公众号

孝感风信网络科技有限公司微信公众号

当前位置:主页 > 技术支持 > DedeCMS > DEDECMSv5.7的联动信息类型只能增加一级和三级选择的解决办法

DEDECMSv5.7的联动信息类型只能增加一级和三级选择的解决办法

时间:2024-05-17来源:风信官网 点击: 591次

织梦系统默认联动类别里有一级二级三级选择,但是不管是我们自己添加新的二级选择,还是新建个一级选择后再添加二级选择均是无法添加新的二级选择,而是直接二级变三级了,这是织梦程序的一个bug,本文就说一下如何解决这个bug程序。

演示版本:dede5.7 UTF8

适用范围: dede5.7(其他版本自己尝试)

ps:按官方的说法,二级选择只能添加到自己新建的一级选择中,但是作者试了一下,根本就不行,最后还是得改代码才行。

第1步:找到并打开织梦后台目录下的stepselect_main.php文件。

第2步:使用/*和*/注销掉215行至290行代码。

第3步:注销掉,添加如下代码,并保存。

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 `dede_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 `dede_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 `dede_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("#([0-9]{1,})\.([0-9]{1,})#", $arr['evalue'], $matchs);
$addvalue = $matchs[2] + 1;
$addvalue = sprintf("%03d", $addvalue);
$evalue = $matchs[1].'.'.$addvalue;
}
$sql = "INSERT INTO `dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`)
VALUES('$ename','$evalue','$egroup','$disorder','$issign'); ";
// echo $sql;exit;
$dsql->ExecuteNoneQuery($sql);
}
// echo $minid;
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 `dede_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 `dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`)
values('$ename','$evalue','$egroup','$disorder','$issign'); ");
}
WriteEnumsCache($egroup);
ShowMsg("成功添加枚举分类!".$issign, $ENV_GOBACK_URL);
exit();
}
}

第4步:再次打开 dede后台目录/templets/stepselect_main.htm文件,按以下方法修改,并保存。

if($topvalue % 500 != 0) $arr['issign'] = 2;
修改为
if($topvalue % 500 != 0) $arr['issign'] = 3;
if($topvalue % 500 == 0) $arr['issign'] = 2;

第5步:更新系统缓存,即可生效。

电脑维修技术注:此方法只能添加到最多三级选择。

栏目列表
推荐内容
热点内容
展开