dedecms 二级联动数据 修正
因为织梦源代码的错误,导致我们只能添加一级和三级联动菜单,并不能添加二级数据,所以除了系统自带的,我们自己添加的数据不能正常调用。
下面是代码修正,/dede/stepselect_main.php
找到类似此段代码,并用它替换。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 else if($action=='addenum_save') 2 { 3 if(empty($ename) || empty($egroup)) 4 { 5 Showmsg("类别名称或组名称不能为空!","-1"); 6 exit(); 7 } 8 if($issign == 1 || $topvalue == 0) 9 { 10 $enames = explode(',', $ename); 11 foreach($enames as $ename) 12 { 13 $arr = $dsql->GetOne("SELECT * FROM `#@__sys_enum` WHERE egroup='$egroup' AND (evalue MOD 500)=0 ORDER BY disorder DESC "); 14 if(!is_array($arr)) $disorder = $evalue = ($issign==1 ? 1 : 500); 15 else $disorder = $evalue = $arr['disorder'] + ($issign==1 ? 1 : 500); 16 17 $dsql->ExecuteNoneQuery("INSERT INTO `#@__sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`) 18 VALUES('$ename','$evalue','$egroup','$disorder','$issign'); "); 19 } 20 WriteEnumsCache($egroup); 21 ShowMsg("成功添加枚举分类!".$dsql->GetError(), $ENV_GOBACK_URL); 22 exit(); 23 } else if ($issign == 3 && $topvalue != 0) 24 { 25 $minid = $topvalue; 26 $maxnum = 500; // 三级子类最多500个 27 $enames = explode(',', $ename); 28 foreach ($enames as $ename) 29 { 30 $arr = $dsql->GetOne("SELECT * FROM `#@__sys_enum` WHERE egroup='$egroup' AND evalue LIKE '$topvalue.%%%' ORDER BY evalue DESC "); 31 if(!is_array($arr)) 32 { 33 $disorder = $minid; 34 $evalue = $minid.'.001'; 35 } 36 else 37 { 38 $disorder = $minid; 39 preg_match("#([0-9]{1,})\.([0-9]{1,})#", $arr['evalue'], $matchs); 40 $addvalue = $matchs[2] + 1; 41 $addvalue = sprintf("%03d", $addvalue); 42 $evalue = $matchs[1].'.'.$addvalue; 43 } 44 $sql = "INSERT INTO `#@__sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`) 45 VALUES('$ename','$evalue','$egroup','$disorder','$issign'); "; 46 // echo $sql;exit; 47 $dsql->ExecuteNoneQuery($sql); 48 } 49 // echo $minid; 50 WriteEnumsCache($egroup); 51 ShowMsg("成功添加枚举分类!".$issign, $ENV_GOBACK_URL); 52 exit(); 53 } else { 54 $minid = $topvalue; 55 $maxid = $topvalue + 500; 56 $enames = explode(',', $ename); 57 foreach($enames as $ename) 58 { 59 $arr = $dsql->GetOne("Select * From `dede_sys_enum` where egroup='$egroup' And evalue>$minid And evalue<$maxid order by evalue desc "); 60 if(!is_array($arr)) 61 { 62 $disorder = $evalue = $minid+1; 63 } 64 else 65 { 66 $disorder = $arr['disorder']+1; 67 $evalue = (int)($arr['evalue']+1); 68 } 69 $dsql->ExecuteNoneQuery("Insert into `dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`) 70 values('$ename','$evalue','$egroup','$disorder','$issign'); "); 71 } 72 WriteEnumsCache($egroup); 73 ShowMsg("成功添加枚举分类!".$issign, $ENV_GOBACK_URL); 74 exit(); 75 } 76 }
打开到/dede/templets/stepselect_main.htm
找到
if($topvalue % 500 != 0) $arr['issign'] = 3;
替换成
if($topvalue % 500 != 0) $arr['issign'] = 3;
if($topvalue % 500 == 0) $arr['issign'] = 2;