公益
建站经验频道 > 正文
2021-10-26 17:51:57 来源:海南科技网  繁体 复制  

  大家好,我们经常会用到将栏目A信息复制到另一个站点栏目B的操作,那么帝国CMS7.5如何实现复制栏目信息到另一栏目时自动去重呢?下面附上来自热心技术高手自摸帝国提供的方法和代码,具体步骤如下:

  一、打开e/class/hinfofun.php,搜索“//复制信息”;

  二、将这个函数的所有代码替换为如下代码即可(从//复制信息到//批量转移信息区间,大概在第2081-2231行位置,操作前记得备份该文件哦):

  


//复制信息
function CopyNews_all($classid,$id,$to_classid,$userid,$username){
 global $empire,$public_r,$class_r,$dbtbpre,$emod_r,$lur;
 $classid=(int)$classid;
 $to_classid=(int)$to_classid;
 if(empty($classid)||empty($to_classid))
 {
  printerror("EmptyCopyClassid","history.go(-1)");
 }
 if(empty($class_r[$classid][islast])||empty($class_r[$to_classid][islast]))
 {
  printerror("EmptyCopyClassid","history.go(-1)");
 }
 if($class_r[$classid][modid]<>$class_r[$to_classid][modid])
 {
  printerror("DefModid","history.go(-1)");
    }
 $userid=(int)$userid;
 //验证权限
 $doselfinfo=CheckLevel($userid,$username,$classid,"news");
 //权限
 if(!$doselfinfo['domoveinfo'])
 {
  printerror("NotMoveInfoLevel","history.go(-1)");
 }
 $count=count($id);
 if(empty($count))
 {
  printerror("NotCopyNewsid","history.go(-1)");
 }
 $userisqf=EcmsReturnDoIsqf($userid,$username,$lur['groupid'],0);
 $dopubid=0;
 $donum=0;
 $dolog='';
 //附加链接参数
 $addecmscheck=empty($_POST['ecmscheck'])?'&ecmscheck=1':'';
 for($i=0;$i<$count;$i++)
 {
  $add.="id='".intval($id[$i])."' or ";
    }
 $add=substr($add,0,strlen($add)-4);
 $mid=$class_r[$classid][modid];
 $tbname=$class_r[$classid][tbname];
 $stf=$emod_r[$mid]['savetxtf'];
 //查看目录是否存在,不存在则建立
 $newspath=FormatPath($to_classid,"",0);
    $newstime=time();
    $truetime=$newstime;
 $newstempid=0;
 $dosql=$empire->query("select id,classid,checked from {$dbtbpre}ecms_".$tbname."_index where ".$add);
 while($index_r=$empire->fetch($dosql))
 {
  //返回表
  $infotb=ReturnInfoMainTbname($tbname,$index_r['checked']);
  //主表
  $r=$empire->fetch1("select * from ".$infotb." where id='$index_r[id]' limit 1");
  //返回表信息
  $infotbr=ReturnInfoTbname($tbname,$index_r['checked'],$r['stb']);
  //副表
  $finfor=$empire->fetch1("select ".ReturnSqlFtextF($mid)." from ".$infotbr['datatbname']." where id='$r[id]' limit 1");
  $r=array_merge($r,$finfor);
  if($stf)//存放文本
  {
   $r[$stf]=GetTxtFieldText($r[$stf]);
  }
  //返回自定义字段
  $ret_r=ReturnAddF($r,$class_r[$to_classid][modid],$userid,$username,9,1,0);
  if($class_r[$to_classid][wfid])
  {
   if($userisqf)
   {
    $checked=$class_r[$to_classid][checked];
    $isqf=0;
   }
   else
   {
    $checked=0;
    $isqf=1;
   }
     }
  else
  {
   $checked=$class_r[$to_classid][checked];
   $isqf=0;
     }
  $checked=(int)$checked;
  
                $u=$empire->fetch1("select title from {$dbtbpre}ecms_".$tbname." where id='$r[id]' limit 1"); //获取要插入的标题    
                $num=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_".$tbname." where classid='$to_classid' and title='$u[title]'"); //查询是否有相同的记
    if($num==0)
                {

                //索引表
                $empire->query("insert into {$dbtbpre}ecms_".$tbname."_index(classid,checked,newstime,truetime,lastdotime,havehtml) values('$to_classid','$checked','$r[newstime]','$truetime','$truetime','$r[havehtml]');");
                $l_id=$empire->lastid();
                $update_infotbr=ReturnInfoTbname($tbname,$checked,$ret_r['tb']);
                //主表
                $sql=$empire->query("insert into ".$update_infotbr['tbname']."(id,classid,ttid,onclick,plnum,totaldown,newspath,filename,userid,username,firsttitle,isgood,ispic,istop,isqf,ismember,isurl,truetime,lastdotime,havehtml,groupid,userfen,titlefont,titleurl,stb,fstb,restb,keyboard".$ret_r[fields].") values('$l_id','$to_classid','$r[ttid]',0,0,0,'$newspath','$filename',$userid,'$username',0,0,'$r[ispic]',0,'$isqf',0,'$r[isurl]',$truetime,$truetime,$r[havehtml],$r[groupid],$r[userfen],'$r[titlefont]','$r[titleurl]','$ret_r[tb]','$public_r[filedeftb]','$public_r[pldeftb]','$r[keyboard]'".$ret_r[values].");");              
                //副表
                $empire->query("insert into ".$update_infotbr['datatbname']."(id,classid,keyid,dokey,newstempid,closepl,haveaddfen,infotags".$ret_r[datafields].") values('$l_id','$to_classid','$r[keyid]',$r[dokey],'".$newstempid."',$r[closepl],0,'$r[infotags]'".$ret_r[datavalues].");");

                      
  if($isqf==1)
  {
   InfoInsertToWorkflow($l_id,$to_classid,$class_r[$to_classid][wfid],$userid,$username);
  }
  //文件命名
  $filename=ReturnInfoFilename($to_classid,$l_id,$r[filenameqz]);
  //信息地址
  $updateinfourl='';
  if(!$r['isurl'])
  {
   $infourl=GotoGetTitleUrl($to_classid,$l_id,$newspath,$filename,$r['groupid'],$r['isurl'],$r['titleurl']);
   $updateinfourl=",titleurl='$infourl'";
  }
  $usql=$empire->query("update ".$update_infotbr['tbname']." set filename='$filename'".$updateinfourl." where id='$l_id'");
  //更新栏目信息数
  AddClassInfos($to_classid,'+1','+1',$checked);
  //生成信息文件
  if($checked)
  {
   $addr=$empire->fetch1("select * from ".$update_infotbr['tbname']." where id='$l_id'");
   GetHtml($addr['classid'],$addr['id'],$addr,1);
  }
  //更新动态缓存
  if($public_r['ctimeopen']&&$checked)
  {
   eUpCacheInfo(1,$to_classid,0,0,$r['ttid'],'',$r[infotags],0,0,1);
  }
  $donum++;
  if($donum==1)
  {
   $dopubid=ReturnInfoPubid($r['classid'],$r['id']);
   $dolog="classid=".$r['classid']."<br>id=".$r['id']."<br>title=".$r['title']."<br>to_classid=".$to_classid;
  }
 }
 //刷新列表
 ReListHtml($to_classid,1);
 //操作日志
 if($donum==1)
 {
  insert_dolog($dolog,$dopubid);
 }
 else
 {
  insert_dolog("classid=".$classid."<br>classname=".$class_r[$classid][classname]."<br>to_classid=".$to_classid);
 } }
 printerror("CopyNewsSuccess",EcmsGetReturnUrl());
}

//批量转移信息

  本网声明:海南科技网发布此文仅出于信息分享,并非赞同其观点或证实其描述,不承担侵权行为的连带责任。投资者据此操作,风险自担。版权归原作者所有,如涉版权或来源标注有误,请联系我们删除。本网原创内容未经书面授权,任何单位或个人不得转载和摘编。

猜您喜欢

网站首页 - 网站简介 - 公益服务 - 联系我们 - 合作伙伴 - 公益活动 - 服务条款 - 法律声明 - 网站帮助 - 网站地图 - 返回顶部

Copyright © 2006-2024 www.haixinnews.com. All Rights Reserved

工信部ICP备案许可证编号:ICP备13067700号 QQ咨询:1621214899

本网站所刊载信息,不代表海南网观点。刊用本网稿件,务经书面授权。

海南网-海新网-海南在线-打造海南受欢迎有影响力的主流综合门户网站!

未经书面授权禁止复制或建立镜像,违者必究。

海南网  海新网  版权所有