找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1255|回复: 0

[分享] dede联动菜单无法添加二级选择

[复制链接]
发表于 2018-7-5 11:11:20 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
dede联动菜单是一个非常实用的功能,然而dedeCMS直接安装后,添加到联动3J菜单以后,再插入二级选择会自动生成3J选择,以下方法解决此bug。

一、找到:dede/stepselect_main.php文件将以下替换源文件215行的对应代码
  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 `dede_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 `dede_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; // 3J子类最多500个  
  27.             $enames = explode(',', $ename);  
  28.             foreach ($enames as $ename)  
  29.             {  
  30.                 $arr = $dsql->GetOne("SELECT * FROM `dede_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 `dede_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文件将

  1. if($topvalue % 500 != 0) $arr['issign'] = 2;
复制代码


替换为:

  1. if($topvalue % 500 != 0) $arr['issign'] = 3;
  2. if($topvalue % 500 == 0) $arr['issign'] = 2;
复制代码


以上这样修改后1,2,3 联动能添加,再4级就不行了。应为这里的标记只判断到3,织梦也最多能添加3级联动。所以足够用了。

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

▶专业解决各类DiscuzX疑难杂症、discuz版本升级 、网站搬家 和 云服务器销售!▶有偿服务QQ 860855665 更多精品应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2025-2-1 14:45 , Processed in 0.044009 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表