找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1749|回复: 0

[分享] DEDE 在后台添加栏目文档的批量复制功能

[复制链接]
发表于 2018-7-30 14:30:40 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
如果想要把一个栏目的所有文档复制到另一个栏目中如果没有好的办法就只能一个一个的重新建立,为了避免这种浪费时间的事,我们就在后台写一个批量复制的功能。下面是实现功能的具体步骤

修改文件dede/templets/content_batch_up.htm

  修改头部脚本函数ShowHideMove()

  1. function ShowHideMove()
  2.     {
  3.         var selBox = document.getElementByIdx_x('moveradio');
  4.         var selBox2 = document.getElementByIdx_x('copyradio');//edited by adan;090508
  5.         var obj = document.getElementByIdx_x('moveField');
  6.         if(selBox.checked||selBox2.checked) obj.style.display = "block";//edited by adan;090508
  7.         else  obj.style.display = "none";
  8.     }
复制代码


  添加复制栏目按钮

  查找

  1. <input name="action" type="radio" class="np" value="move" id="moveradio" onClick="ShowHideMove()" />
复制代码

        移动文档

  后面添加

  1.   <input name="action" type="radio" class="np" value="copy" id="copyradio" onClick="ShowHideMove()" /><!--added by adan;090508-->
复制代码

        复制栏目文档

  修改文件dede/content_batch_action.PHP

  首先删除文件最后的两段代码

  1. //删除空标题内容
  2. else if($action=='delnulltitle')
  3. {
  4.     $dsql->SetQuery("Select id From dede_archives where trim(title)='' ");
  5.     $dsql->Execute('x');
  6.     $tdd = 0;
  7.     while($row = $dsql->GetObject('x'))
  8.     {
  9.         if(DelArc($row->id))
  10.         {
  11.             $tdd++;
  12.         }
  13.     }
  14.     ShowMsg("成功删除 $tdd 条记录!","JavaScript:;");
  15.     exit();
  16. }

  17. //修正缩略图错误
  18. else if($action=='modddpic')
  19. {
  20.     $dsql->ExecuteNoneQuery("Update dede_archives set litpic='' where trim(litpic)='litpic' ");
  21.     ShowMsg("成功修正缩略图错误!","javascript:;");
  22.     exit();
  23. }

  24.   上面2段代码,官方人员竟然把上面2段代码搞重复了,先汗一个!

  25.   然后在最后添加下面代码

  26. //start 添加复制栏目文章功能 added by adan;090508
  27. else if($action=='copy')
  28. {
  29.   if(empty($typeid))
  30.   {
  31.          ShowMsg('该操作必须指定栏目!','javascript:;');   
  32.          exit();
  33.     }
  34.   $typeold = $dsql->GetOne("Select * From `dede_arctype` where id='$typeid'; ");
  35.   $typenew = $dsql->GetOne("Select * From `dede_arctype` where id='$newtypeid'; ");
  36.   if(!is_array($typenew))
  37.   {
  38.       $dsql->Close();
  39.     ShowMsg("无法检测复制到的新栏目的信息,不能完成操作!","javascript:;");
  40.       exit();
  41.   }
  42.   if($typenew['ispart']!=0)
  43.   {
  44.       $dsql->Close();
  45.     ShowMsg("你不能把数据复制到非最终列表的栏目!","javascript:;");
  46.       exit();
  47.   }
  48.   if($typenew['channeltype']!=$typeold['channeltype'])
  49.   {
  50.       $dsql->Close();
  51.     ShowMsg("不能把数据复制到内容类型不同的栏目!","javascript:;");
  52.       exit();
  53.   }
  54.     $gwhere .= " And channel='".$typenew['channeltype']."' And title like '%$keyword%'";

  55.     $ch = $dsql->GetOne("Select addtable From `dede_channeltype` where id={$typenew['channeltype']} ");
  56.     $addtable = $ch['addtable'];

  57.     $dsql->SetQuery("Select * From `dede_archives` where typeid='$typeid'");
  58.     $dsql->Execute('c');
  59.     $tdd = 0;
  60.     while($row = $dsql->GetObject('c'))
  61.     {
  62.         $senddate = time();
  63.         $sortrank = AddDay($senddate,0);//第二个参数是排序值,参考article_add.php
  64.       $ID = $row->id;

  65.         $typeid = $newtypeid;//$newtypeid
  66.         $sortrank = $row->sortrank;
  67.         $flag = $row->flag;
  68.         $ismake = $row->ismake;
  69.         $channelid = $row->channel;
  70.         $arcrank = $row->arcrank;
  71.         $click = $row->click;
  72.         $money = $row->money;
  73.         $title = addslashes($row->title);//需要添加addslashes()转换; adan;090508
  74.         $shorttitle = $row->shorttitle;
  75.         $color = $row->color;
  76.         $writer = $row->writer;
  77.         $source = $row->source;
  78.         $litpic = $row->litpic;
  79.         $pubdate = $row->pubdate;
  80.         $adminid = $cuserLogin->getUserID();
  81.         $notpost = $row->notpost;
  82.         $description = addslashes($row->description);//需要添加addslashes()转换; adan;090508
  83.         $keywords = $row->keywords;

  84.       require_once(DEDEADMIN."/inc/inc_archives_functions.php");
  85.       //生成文档ID
  86.       $arcID = GetIndexKey($arcrank,$typeid,$sortrank,$channelid,$senddate,$adminid);

  87.       if(empty($arcID))
  88.       {
  89.           ShowMsg("无法获得主键,因此无法进行后续操作!","-1");
  90.           exit();
  91.       }
  92.         //加入数据表dede_archives的SQL语句
  93.         //----------------------------------
  94.         $inQuery = "INSERT INTO `dede_archives`(id,typeid,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,
  95.         color,writer,source,litpic,pubdate,senddate,mid,lastpost,scores,goodpost,badpost,notpost,description,keywords,filename)
  96.         VALUES ('$arcID','$typeid','','$sortrank','$flag','$ismake','$channelid','$arcrank','0','$money',
  97.         '$title','$shorttitle','$color','$writer','$source','$litpic','$pubdate','$senddate',
  98.         '$adminid','0','0','0','0','0','$description','$keywords','');";

  99.       if(!$dsql->ExecuteNoneQuery($inQuery))
  100.       {
  101.           $gerr = $dsql->GetError();
  102.           $dsql->ExecuteNoneQuery("Delete From `dede_arctiny` where id='$arcID'");
  103.           ShowMsg("把数据保存到数据库主表 `dede_archives` 时出错,请把相关信息提交给DedeCms官方。".str_replace('"','',$gerr),"javascript:;");
  104.           exit();
  105.       }

  106.       //保存到附加表
  107.       $cts = $dsql->GetOne("Select addtable From `dede_channeltype` where id='$channelid' ");
  108.       $addtable = trim($cts['addtable']);
  109.       if(empty($addtable))
  110.       {
  111.           $dsql->ExecuteNoneQuery("Delete From `dede_archives` where id='$arcID'");
  112.           $dsql->ExecuteNoneQuery("Delete From `dede_arctiny` where id='$arcID'");
  113.           ShowMsg("没找到当前模型[{$channelid}]的主表信息,无法完成操作!。","javascript:;");
  114.           exit();
  115.       }
  116.       $useip = GetIP();
  117.         $redirecturl = $addRow['redirecturl'];
  118.         $templet = $addRow['templet'];
  119.         $addRow = $dsql->GetOne("Select * from `{$addtable}` where aid='$ID'");
  120.         $body = addslashes($addRow["body"]);

  121.       $query = "INSERT INTO `{$addtable}`(aid,typeid,redirecturl,templet,userip,body) Values('$arcID','$typeid','$redirecturl','$templet','$useip','$body')";
  122.       if(!$dsql->ExecuteNoneQuery($query))
  123.       {
  124.           $gerr = $dsql->GetError();
  125.           $dsql->ExecuteNoneQuery("Delete From `dede_archives` where id='$arcID'");
  126.           $dsql->ExecuteNoneQuery("Delete From `dede_arctiny` where id='$arcID'");
  127.           ShowMsg("把数据保存到数据库附加表 `{$addtable}` 时出错,请把相关信息提交给DedeCms官方。".str_replace('"','',$gerr),"javascript:;");
  128.           exit();
  129.       }
  130.       else $tdd++;
  131.     }
  132.   if($tdd>0)
  133.   {
  134.       $jumpurl  = "makehtml_archives_action.php?endid=$endid&startid=$startid";
  135.     $jumpurl .= "&typeid=$newtypeid&pagesize=20&seltime=$seltime";
  136.     $jumpurl .= "&stime=".urlencode($starttime)."&etime=".urlencode($endtime);
  137.       ShowMsg("成功复制了 $tdd 条记录,准备重新生成HTML...",$jumpurl);
  138.   }
  139.   else ShowMsg("完成操作,没复制任何数据...","javascript:;");
  140.   exit();
  141. }
复制代码

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

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

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

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

关闭

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

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

GMT+8, 2024-11-30 13:40 , Processed in 0.043030 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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