找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 117|回复: 0

[cms教程] DEDE 在后台添加栏目文档的批量复制功能

[复制链接]

该用户从未签到

发表于 2020-6-16 15:41:03 | 显示全部楼层 |阅读模式

您需要 登录 才可以下载或查看,没有账号?立即注册

×
如果想要把一个栏目的所有文档复制到另一个栏目中如果没有好的办法就只能一个一个的重新建立,为了避免这种浪费时间的事,我们就在后台写一个批量复制的功能。下面是实现功能的具体步骤
         
        修改文件dede/templets/content_batch_up.htm
         
          修改头部脚本函数ShowHideMove()
         
           function ShowHideMove()
            {
                var selBox = document.getElementByIdx_x('moveradio');
                var selBox2 = document.getElementByIdx_x('copyradio');//edited by adan;090508
                var obj = document.getElementByIdx_x('moveField');
                if(selBox.checked||selBox2.checked) obj.style.display = "block";//edited by adan;090508
                else  obj.style.display = "none";
            }
         
          添加复制栏目按钮
         
          查找
         
        [i,
                移动文档
         
          后面添加
         
            [i,
                复制栏目文档
         
          修改文件dede/content_batch_action.PHP
         
          首先删除文件最后的两段代码
         
        //删除空标题内容
        else if($action=='delnulltitle')
        {
            $dsql->SetQuery("Select id From dede_archives where trim(title)='' ");
            $dsql->Execute('x');
            $tdd = 0;
            while($row = $dsql->GetObject('x'))
            {
                if(DelArc($row->id))
                {
                    $tdd++;
                }
            }
            ShowMsg("成功删除 $tdd 条记录!","JavaScript:;");
            exit();
        }
         
        //修正缩略图错误
        else if($action=='modddpic')
        {
            $dsql->ExecuteNoneQuery("Update dede_archives set litpic='' where trim(litpic)='litpic' ");
            ShowMsg("成功修正缩略图错误!","javascript:;");
            exit();
        }
         
          上面2段代码,官方人员竟然把上面2段代码搞重复了,先汗一个!
         
          然后在最后添加下面代码
         
        //start 添加复制栏目文章功能 added by adan;090508
        else if($action=='copy')
        {
          if(empty($typeid))
          {
                 ShowMsg('该操作必须指定栏目!','javascript:;');   
                 exit();
            }
          $typeold = $dsql->GetOne("Select * From `dede_arctype` where id='$typeid'; ");
          $typenew = $dsql->GetOne("Select * From `dede_arctype` where id='$newtypeid'; ");
          if(!is_array($typenew))
          {
              $dsql->Close();
            ShowMsg("无法检测复制到的新栏目的信息,不能完成操作!","javascript:;");
              exit();
          }
          if($typenew['ispart',!=0)
          {
              $dsql->Close();
            ShowMsg("你不能把数据复制到非最终列表的栏目!","javascript:;");
              exit();
          }
          if($typenew['channeltype',!=$typeold['channeltype',)
          {
              $dsql->Close();
            ShowMsg("不能把数据复制到内容类型不同的栏目!","javascript:;");
              exit();
          }
            $gwhere .= " And channel='".$typenew['channeltype',."' And title like '%$keyword%'";
         
            $ch = $dsql->GetOne("Select addtable From `dede_channeltype` where id={$typenew['channeltype',} ");
            $addtable = $ch['addtable',;
         
            $dsql->SetQuery("Select * From `dede_archives` where typeid='$typeid'");
            $dsql->Execute('c');
            $tdd = 0;
            while($row = $dsql->GetObject('c'))
            {
                $senddate = time();
                $sortrank = AddDay($senddate,0);//第二个参数是排序值,参考article_add.php
              $ID = $row->id;
         
                $typeid = $newtypeid;//$newtypeid
                $sortrank = $row->sortrank;
                $flag = $row->flag;
                $ismake = $row->ismake;
                $channelid = $row->channel;
                $arcrank = $row->arcrank;
                $click = $row->click;
                $money = $row->money;
                $title = addslashes($row->title);//需要添加addslashes()转换; adan;090508
                $shorttitle = $row->shorttitle;
                $color = $row->color;
                $writer = $row->writer;
                $source = $row->source;
                $litpic = $row->litpic;
                $pubdate = $row->pubdate;
                $adminid = $cuserLogin->getUserID();
                $notpost = $row->notpost;
                $description = addslashes($row->description);//需要添加addslashes()转换; adan;090508
                $keywords = $row->keywords;
         
              require_once(DEDEADMIN."/inc/inc_archives_functions.php");
              //生成文档ID
              $arcID = GetIndexKey($arcrank,$typeid,$sortrank,$channelid,$senddate,$adminid);
         
              if(empty($arcID))
              {
                  ShowMsg("无法获得主键,因此无法进行后续操作!","-1");
       
       
       
                 
       
                 
       
                exit();
       
                      }
       
                        //加入数据表dede_archives的SQL语句
       
                        //----------------------------------
       
                        $inQuery = "INSERT INTO `dede_archives`(id,typeid,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,
       
                        color]writer,source,litpic,pubdate,senddate,mid,lastpost,scores,goodpost,badpost,notpost,description,keywords,filename)
       
                        VALUES ('$arcID','$typeid','','$sortrank','$flag','$ismake','$channelid','$arcrank','0','$money',
       
                        '$title','$shorttitle','$color','$writer','$source','$litpic','$pubdate','$senddate',
       
                        '$adminid','0','0','0','0','0','$description','$keywords','');";
       
                 
       
                      if(!$dsql->ExecuteNoneQuery($inQuery))
       
                      {
       
                          $gerr = $dsql->GetError();
       
                          $dsql->ExecuteNoneQuery("Delete From `dede_arctiny` where id='$arcID'");
       
                          ShowMsg("把数据保存到数据库主表 `dede_archives` 时出错,请把相关信息提交给DedeCms官方。".str_replace('"','',$gerr)]"javascript:;");
       
                          exit();
       
                      }
       
                 
       
                      //保存到附加表
       
                      $cts = $dsql->GetOne("Select addtable From `dede_channeltype` where id='$channelid' ");
       
                      $addtable = trim($cts['addtable',);
       
                      if(empty($addtable))
       
                      {
       
                          $dsql->ExecuteNoneQuery("Delete From `dede_archives` where id='$arcID'");
       
                          $dsql->ExecuteNoneQuery("Delete From `dede_arctiny` where id='$arcID'");
       
                          ShowMsg("没找到当前模型[{$channelid},的主表信息,无法完成操作!。","javascript:;");
       
                          exit();
       
                      }
       
                      $useip = GetIP();
       
                        $redirecturl = $addRow['redirecturl',;
       
                        $templet = $addRow['templet',;
       
                        $addRow = $dsql->GetOne("Select * from `{$addtable}` where aid='$ID'");
       
                        $body = addslashes($addRow["body",);
       
                 
       
                      $query = "INSERT INTO `{$addtable}`(aid,typeid,redirecturl]templet,userip]body) Values('$arcID','$typeid','$redirecturl','$templet','$useip','$body')";
       
                      if(!$dsql->ExecuteNoneQuery($query))
       
                      {
       
                          $gerr = $dsql->GetError();
       
                          $dsql->ExecuteNoneQuery("Delete From `dede_archives` where id='$arcID'");
       
                          $dsql->ExecuteNoneQuery("Delete From `dede_arctiny` where id='$arcID'");
       
                          ShowMsg("把数据保存到数据库附加表 `{$addtable}` 时出错,请把相关信息提交给DedeCms官方。".str_replace('"','',$gerr)]"javascript:;");
       
                          exit();
       
                      }
       
                      else $tdd++;
       
                    }
       
                  if($tdd>0)
       
                  {
       
                      $jumpurl  = "makehtml_archives_action.php?endid=$endid&startid=$startid";
       
                    $jumpurl .= "&typeid=$newtypeid&pagesize=20&seltime=$seltime";
       
                    $jumpurl .= "&stime=".urlencode($starttime)."&etime=".urlencode($endtime);
       
                      ShowMsg("成功复制了 $tdd 条记录,准备重新生成HTML...",$jumpurl);
       
                  }
       
                  else ShowMsg("完成操作,没复制任何数据...","javascript:;");
       
                  exit();
       
                }
回复

使用道具 举报

网站地图|页面地图|文字地图|Archiver|手机版|小黑屋|找资源 |网站地图

GMT+8, 2024-10-7 18:30

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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