栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP > php开源框架 > dedecms

织梦5.7bug修复:后台联动无法添加二级栏目的办法

dedecms 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

织梦5.7bug修复:后台联动无法添加二级栏目的办法

我在使用织梦dedecms的分类信息的时候需要添加联动属性,结果去添加联动属性的时候,发现只可以添加一级联动和三级联动。

二级联动无法添加了。

在自己的5.6的后台添加的时候,发现是可以的。估计又是5.7版本的bug了。

    于是分析了代码,和大家分享下解决的办法:
首先我们找到我们的模板源码下面的 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 `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 == 2 && $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("d", $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("成功添加枚举分类!", $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 = $arr['evalue']+1;
     }
     $dsql->ExecuteNoneQuery("INSERT INTO `dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`)
     VALUES('$ename','$evalue','$egroup','$disorder','$issign'); ");
 }
 WriteEnumsCache($egroup);
 ShowMsg("成功添加枚举分类!", $ENV_GOBACK_URL);
 exit();
    }
}


 

替换为:
 

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 evalue 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
  {
    $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 = $arr['evalue']+1;
     }
     $dsql->ExecuteNoneQuery("Insert into `dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`)
      values('$ename','$evalue','$egroup','$disorder','$issign'); ");
 }
 WriteEnumsCache($egroup);
    ShowMsg("成功添加枚举分类!", $ENV_GOBACK_URL);
    exit();
  }
}



然后保存,在系统后台更新系统缓存就可以了的。现在在后台的联动类别管理里面就可以增加二级选择了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/5240.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号