`

织梦5.7bug修复后台联动不能添加二级栏目的方法

 
阅读更多

http://www.51dedecms.com/news/dedecms/2011/0717/2341.html

 给客户安装的5.7新版后台,为了给客户添加一个产品的分类,我使用的分类信息,结果去添加联动属性的时候,发现只可以添加一级联动和三级联动。二级联动无法添加了。我在我自己的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("%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();
  }
}

 

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

分享到:
评论

相关推荐

    教你如何去除织梦5.7版权.txt

    ### 教你如何去除织梦5.7版权 在探讨如何去除织梦5.7版权之前,我们首先需要了解织梦(DedeCMS)的基本概念及其版权信息的重要性。织梦CMS是一款广泛使用的开源内容管理系统,它基于PHP语言开发,支持MySQL数据库。...

    织梦5.7后天假死解决

    再者,"admin-无假死版本"表明可能已经对后台进行了优化,可能是修复了特定的bug,或者调整了某些功能的执行逻辑,使得后台运行更加流畅。具体优化措施可能包括: 1. **缓存机制**:增加或优化缓存策略,例如使用...

    DEDE 织梦5.7 新闻采集规则

    对于密文,DEDE织梦可能提供了解密方法或者需要用户自定义解密规则,以便正确解析和展示内容。 5. **腾讯与搜狐新闻源**:这两个知名新闻网站提供了丰富的实时资讯,通过设定对应的采集规则,可以获取到各种类型的...

    织梦5.7标签大全

    ### 织梦5.7标签大全详解 #### 一、织梦系统简介 织梦(DeDeCMS)是一款广泛应用于网站建设的内容管理系统(Content Management System, CMS),以其强大的功能、灵活的操作性和简便的安装流程受到广大站长的喜爱。...

    织梦dede5.7标签大全

    织梦dede5.7标签大全,非常实用。非常适合织梦开发人员的参考使用。

    600元购买的超值中国货源网织梦5.7sp1带论坛

    600元购买的超值中国货源网织梦5.7sp1带论坛

    营销管理培训类企业站源码(织梦5.7sp2)

    营销管理培训类企业整站源码,采用织梦5.7sp2内核,utf8编码,带数据库整站源码,亲测可用,代码简洁,非常适合seo,布局合理,美观大气,适合做营销站,稍作修改可作任何行业站点。本人该源码修改后站点演示...

    织梦5.7 视频模型

    经过几天的努力,在论坛里下载了份仿官方的模板,加论坛里的快播、优酷、视频模型插件等

    简洁大气的博客文章网站源码 DEDE织梦5.7内核.rar

    一款采用织梦5.7内核制作的博客文章网站源码,功能方面非常强大。源码界面设计简洁大气,后台完整无错没有任何功能限制。程序广告位为后台管理,方便站长更新和替换广告。程序非常完整,安装后即可使用,用来做各类...

    织梦采集侠5.7完美破解版

    其实织梦采集侠V2.7新增的功能不多,仅加入了规则导入导出、自动文章自定义属性、标题随机关键词和一项新的采集方式,更加快速简便的采集内容。主要是对老版本存在的一些问题,进行改进和修复,使插件越趋完善。 ...

    蓝色极品站酷公司网站整站 行业通用版 织梦5.7内核

    一款使用织梦5.7内核的公司网站整站,适合各行各业,此模板简洁大方,制作精良,整站DIV+CSS布局,网站优化出众,本站酷企业模板分享目的旨在为更多的网络技术人员提供良好的建站平台,无任何收费行为。 安装步骤:...

    开心客栈笑话网站源码织梦5.7sp1内核.rar

    本程序用的是织梦5.7sp1,已经打上最新2012-4-30号的补丁。 下载解压后会看到两个文件。 sqlkxkznet 解压到数据库 webkxkznet 解压到网站根目录   mysql数据库链接 账号:root ...

    最新织梦5.7英文网站源码

    适合空间较小的,建个英文站,自写采集,大家知道,google的收录门槛很低,赶快建站狂吸美金

    dede织梦5.7

    2. `robots.txt`:这是一个文本文件,用于告诉搜索引擎哪些页面可以抓取,哪些不能,有助于优化SEO(搜索引擎优化)。 3. `images`:存放网站的各种图片资源,如logo、背景图、内容图片等。 4. `dede`:织梦CMS的...

    仿中国站长网源码织梦5.7sp1源码.rar

    和中国站长网一模一样,程序测试完整,不过里面的栏目和广告位太多了,非常适合老手使用 1. 上传所有文件到服务器,并设置根目录有写入权限, 2. 打开IE 输入http://你的网址/install/ 4. 下一步,,直接点继续,,, 5...

    仿IT之家源码 v1.0 织梦5.7内核.zip

    仿IT之家源码安装方式: ...2.登录后台 网址/dede 进入后台-系统设置里填上你的网站信息,注意:把模版选项改为:cnit5 改好后生成下全站及可!! 3.修改管理员密码 如有问题联系QQ:289912053

    织梦banner轮播图插件

    "织梦banner轮播图插件"是一款专为织梦内容管理系统(DedeCMS)设计的扩展组件,旨在帮助用户轻松实现网站首页的动态轮播图功能。这款插件允许用户自定义创建多个轮播图分类,每个分类下可以添加多张图片,同时支持...

    dede5.7定时审核更新插件

    插件中的“使用说明.txt”文件应该是提供详细的安装和使用指南,包括如何下载插件、如何在dede5.7后台安装、设置定时任务、配置自动更新规则等步骤,这对于不熟悉系统操作的用户来说非常重要,确保他们能顺利使用...

    DEDECMS5.7后台getshell1

    但是,攻击者可以通过在文件名前添加特殊字符来 bypass DEDECMS 5.7后台的安全检查。例如,攻击者可以上传一个名为"1.php.jpg?p*h%p"的文件,该文件名中包含特殊字符"?p*h%p",从而使DEDECMS 5.7后台认为该文件是一...

Global site tag (gtag.js) - Google Analytics