dedecms 二级联动数据 修正

因为织梦源代码的错误,导致我们只能添加一级和三级联动菜单,并不能添加二级数据,所以除了系统自带的,我们自己添加的数据不能正常调用。

下面是代码修正,/dede/stepselect_main.php

找到类似此段代码,并用它替换。

View Code
 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;

posted @ 2012-09-22 21:56  小菜、  阅读(266)  评论(0编辑  收藏  举报