dede联动类别添加无法添加二级枚举无法 - 电脑 - 【龙岩电脑网】_龙岩电脑维修_龙岩笔记本电脑维修_监控安装_市区上门维修
公司动态

dede联动类别添加无法添加二级枚举无法

摘要:文章目录索引(?) [-] 文章简介 适用范围 解决方法文章简介织梦系统默认联动类别里有一级二级三级选择,但是不管是我们自己添加新的二级选择,还是新建个一级选择后再添加二级选择均是无...

发布日期:2018-04-25

文章目录索引(?) [-]

    文章简介 适用范围 解决方法

文章简介

织梦系统默认联动类别里有一级二级三级选择,但是不管是我们自己添加新的二级选择,还是新建个一级选择后再添加二级选择均是无法添加新的二级选择,而是直接二级变三级了,这是织梦程序的一个bug,本文就说一下如何解决这个bug程序。

适用范围

演示版本:dede5.7 UTF8

适用范围: dede5.7(其他版本自己尝试)

解决方法

ps:按官方的说法,二级选择只能添加到自己新建的一级选择中,但是作者试了一下,根本就不行,最后还是得改代码才行。

第1步:找到并打开织梦后台目录下的stepselect_main.php文件。

第2步:使用/*和*/注销掉215行至290行代码。

第3步:注销掉,添加如下代码,并保存。原文网址http://www.pc811.com/6/4/26139.html

  1. elseif($action=="addenum_save"){
  2. if(empty($ename)||empty($egroup)){
  3. Showmsg("类别名称或组名称不能为空!","-1");exit();
  4. }if($issign==1||$topvalue==0)
  5. {$enames=explode(",",$ename);
  6. foreach($enamesas$ename){
  7. $arr=$dsql->GetOne("SELECT*FROM`dede_sys_enum`WHEREegroup="$egroup"AND(evalueMOD500)=0ORDERBYdisorderDESC");if(!is_array($arr))$disorder=$evalue=($issign==1?1:500);
  8. else$disorder=$evalue=$arr["disorder"]+($issign==1?1:500);
  9. $dsql->ExecuteNoneQuery("INSERTINTO`dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`)VALUES("$ename","$evalue","$egroup","$disorder","$issign");");
  10. }WriteEnumsCache($egroup);
  11. ShowMsg("成功添加枚举分类!".$dsql->GetError(),$ENV_GOBACK_URL);exit();
  12. }elseif($issign==3&&$topvalue!=0){
  13. $minid=$topvalue;$maxnum=500;//三级子类最多500个
  14. $enames=explode(",",$ename);foreach($enamesas$ename)
  15. {$arr=$dsql->GetOne("SELECT*FROM`dede_sys_enum`WHEREegroup="$egroup"ANDevalueLIKE"$topvalue.%%%"ORDERBYevalueDESC");
  16. if(!is_array($arr)){
  17. $disorder=$minid;$evalue=$minid.".001";
  18. }else
  19. {$disorder=$minid;
  20. preg_match("#([0-9]{1,})\.([0-9]{1,})#",$arr["evalue"],$matchs);$addvalue=$matchs[2]+1;
  21. $addvalue=sprintf("%03d",$addvalue);$evalue=$matchs[1].".".$addvalue;
  22. }$sql="INSERTINTO`dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`)
  23. VALUES("$ename","$evalue","$egroup","$disorder","$issign");";//echo$sql;exit;
  24. $dsql->ExecuteNoneQuery($sql);}
  25. //echo$minid;WriteEnumsCache($egroup);
  26. ShowMsg("成功添加枚举分类!".$issign,$ENV_GOBACK_URL);exit();
  27. }else{$minid=$topvalue;
  28. $maxid=$topvalue+500;$enames=explode(",",$ename);
  29. foreach($enamesas$ename){
  30. $arr=$dsql->GetOne("Select*From`dede_sys_enum`whereegroup="$egroup"Andevalue>$minidAndevalue<$maxidorderbyevaluedesc");if(!is_array($arr))
  31. {$disorder=$evalue=$minid+1;
  32. }else
  33. {$disorder=$arr["disorder"]+1;
  34. $evalue=(int)($arr["evalue"]+1);}
  35. $dsql->ExecuteNoneQuery("Insertinto`dede_sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`)values("$ename","$evalue","$egroup","$disorder","$issign");");
  36. }WriteEnumsCache($egroup);
  37. ShowMsg("成功添加枚举分类!".$issign,$ENV_GOBACK_URL);exit();
  38. }}

电脑维修技术网注:由于很多原因,可能会造成无法修改或是其他错误,这是stepselect_main.php文件下载地址。

第4步:再次打开 dede后台目录/templets/stepselect_main.htm文件,按以下方法修改,并保存。

  1. if($topvalue%500!=0)$arr["issign"]=2;修改为
  2. if($topvalue%500!=0)$arr["issign"]=3;if($topvalue%500==0)$arr["issign"]=2;

电脑维修技术网注:由于很多原因,可能会造成无法修改或是其他错误,这是stepselect_main.htm文件下载地址

第5步:更新系统缓存,即可生效。

电脑维修技术注:此方法只能添加到最多三级选择。

ps:如有任何疑问,可在评论中针对本文进行留言,一般来说作者都是当年回复的。