返回列表 发新帖
查看: 1113|回复: 2

[DedeCms] [插件模块]解决dedecms5.7后台不能添加联动二级的bug

[复制链接]

6671

热度

1万

元宝

262

贡献

管理员

DZ专员

发表于 2014-4-20 10:56:00 | 显示全部楼层 |阅读模式
解决此问题,只须修改dede/stepselect_main.php的相关内容就可以了。


首先在空间里找到dede/stepselect_main.php 这个文件,然后找到其中的这段代码
  • 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 `#@__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("#([0-9]{1,})\.([0-9]{1,})#", $arr['evalue'], $matchs);
  •                 $addvalue = $matchs[2] + 1;
  •                 $addvalue = sprintf("d", $addvalue);
  •                 $evalue = $matchs[1].'.'.$addvalue;
  •             }
  •             $sql = "INSERT INTO `#@__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();
  • }
  • }
  • 2.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;
    以上这样修改后1,2,3联动能添加,再4级就不行了。应为这里的标记只判断到3,织梦也最多能添加3级联动。所以足够用了。

    以经改好了代码 大家可以下载 解决dedecms5.7后台不能添加联动二级的bug

解决dedecms5.7后台不能添加联动二级的bug-草根吧 GBK.rar (9.11 KB, 下载次数: 3)

2

热度

20

元宝

0

贡献

步入草根

发表于 2015-1-30 20:25:52 | 显示全部楼层
又是热度。。
返回列表 发新帖
 懒得打字嘛,点击右侧快捷回复【最新发布】   【赞助草根吧享更多权益】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

收藏帖子 返回列表 搜索

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

小黑屋|手机版|草根吧