找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2832|回复: 3

[分享] ]织梦DEDECMSv5.7的联动信息类型只能增加一级和3J选择的解决办法

[复制链接]
发表于 2013-1-24 18:05:40 | 显示全部楼层 |阅读模式 来自 LAN
今天在做一个织梦DEDECMS装饰工程企业网站的时候,需要用到分类信息,模板是用的DEDECMS V5.7版本的,在修改联动类别里面的信息类型的时候发现只能增加一级选择和3J选择,就是不能增加二级选择,怎么办呢?
去织梦官方找了下解决办法没得,看来只能自己研究了。
后来使用DEDECMSV5.6版本的进行测试,发现5.6的是可以使用的,那就可以找到解决的办法了。
首先我们找到我们的模板源码下面的 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; // 3J子类最多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(\"%03d\", $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();
  }
}

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

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

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

发表于 2013-7-1 22:11:38 | 显示全部楼层 来自 中国–广东–广州
goodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgoodgood

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

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

回复 支持 反对

使用道具 举报

发表于 2013-8-15 10:57:39 | 显示全部楼层 来自 中国–广东–深圳
学习了哦!!!

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

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

回复 支持 反对

使用道具 举报

发表于 2015-5-18 14:42:51 | 显示全部楼层 来自 中国–广东–广州
新手路过,看了一下,现在还是不懂

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

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

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

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

关闭

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

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

GMT+8, 2024-11-6 00:35 , Processed in 0.035463 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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