在Dedecms中添加复制文档功能是一项非常实用的改进,能够帮助用户更高效地管理内容。以下是具体步骤,按照这些步骤操作可以轻松实现该功能。

一、打开模板文件
打开目录下的文件。
找到以下代码行:


 移动 
    

在其下方添加以下代码:


 复制 
    

二、修改JavaScript文件
打开文件。
找到函数:


function moveArc(e, obj, cid){
    var qstr=getCheckboxItem();
    if(qstr==''){
        alert('必须选择一个或多个文档!');
        return;
    }
    LoadQuickDiv(e, 'archives_do.php?dopost=moveArchives&qstr='+qstr+'&channelid='+cid+'&rnd='+Math.random(), 'moveArchives', '450px', '180px');
    ChangeFullDiv('show');
}
    

在该函数下方添加函数:


function copyArc(e, obj, cid){
    var qstr=getCheckboxItem();
    if(qstr==''){
        alert('必须选择一个或多个文档!');
        return;
    }
    LoadQuickDiv(e, 'archives_do.php?dopost=copyArchives&qstr='+qstr+'&channelid='+cid+'&rnd='+Math.random(), 'copyArchives', '450px', '180px');
    ChangeFullDiv('show');
}
    

三、修改PHP处理文件
打开文件。
找到以下代码:


else if($dopost=='moveArchives')
{
    

在此代码块结束处(大约在第433行左右),添加以下代码:


/*-------------------------
function copyArchives(){ }
-------------------------*/
else if($dopost=='copyArchives')
{
    CheckPurview('sys_ArcBatch');
    if(empty($totype))
    {
        require_once(DEDEINC.'/typelink.class.php');
        if( !empty($aid) && empty($qstr) ) $qstr = $aid;
        AjaxHead();
        $channelid = empty($channelid) ? 0 : $channelid;
        $tl = new TypeLink($aid);
        $typeOptions = $tl->GetOptionArray(0, $admin_catalogs, $channelid);
        $typeOptions = "";
        
        // 输出AJAX可移动窗体
        $divname = 'copyArchives';
        echo "

\\n"; echo "
复制文档
\\r\\n"; echo "
关闭
\\r\\n"; echo "
\\r\\n"; echo "
\\r\\n"; echo "\\r\\n"; echo "\\r\\n"; echo "\\r\\n"; echo ""; echo " "; echo " "; echo ""; echo ""; echo " "; echo " "; echo ""; echo ""; echo " "; echo ""; echo ""; echo "
 目标栏目:"; echo " "; echo "
 文档ID:"; echo " \\" style='width:310px;overflow:hidden;' />"; echo "
"; echo " 复制到的目标栏目必须和选定的文档频道类型一致,否则程序会自动勿略不符合的文档。"; echo "
"; echo " "; echo "   "; echo " "; echo "
"; echo "
"; echo "GetOne("SELECT tp.channeltype,tp.ispart,tp.channeltype,ch.maintable,ch.addtable,ch.issystem FROM `me_arctype` tp LEFT JOIN `me_channeltype` ch on ch.id=tp.channeltype WHERE tp.id='$totype' "); $idtype = "id"; if(!is_array($typeInfos)) { ShowMsg('参数错误!','-1'); exit(); } if($typeInfos['ispart']!=0) { ShowMsg('文档保存的栏目必须为最终列表栏目!','-1'); exit(); } if(empty($typeInfos['addtable'])) { $typeInfos['maintable'] = 'me_archives'; } // 增加单表模型判断 if($typeInfos['issystem'] == -1) { $typeInfos['maintable'] = $typeInfos['addtable']; $idtype = "aid"; } $arcids = preg_replace("#[^0-9,]#", '', preg_replace("#`#", ',', $qstr)); $arc = ''; $j = 0; $okids = array(); $dsql->SetQuery("SELECT {$idtype},typeid FROM `{$typeInfos['maintable']}` WHERE {$idtype} in($arcids) AND channel='{$typeInfos['channeltype']}' "); $dsql->Execute(); while($row = $dsql->GetArray()) { if($row['typeid']!=$totype) { $dsql->ExecuteNoneQuery("insert into me_arctiny (typeid,typeid2,arcrank,channel,senddate,sortrank,mid) select typeid,typeid2,arcrank,channel,senddate,sortrank,mid from me_arctiny where id='{$row[$idtype]}'"); $xid = $dsql->GetLastID(); $dsql->ExecuteNoneQuery("insert into `{$typeInfos['maintable']}`(id,typeid,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,color,writer,source,litpic,pubdate,senddate,mid,keywords,lastpost,scores,goodpost,badpost,voteid,notpost,description,filename,dutyadmin,tackid,mtype,weight) select case when id>'0' then '$xid' else '' end, case when typeid>'0' then '$totype' else '' end,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,color,writer,source,litpic,pubdate,senddate,mid,keywords ,lastpost,scores,goodpost,badpost,voteid,notpost,description,filename,dutyadmin,tackid,mtype,weight from `{$typeInfos['maintable']}` WHERE id='{$row[$idtype]}' "); $dsql->ExecuteNoneQuery("insert into `{$typeInfos['addtable']}`(aid,typeid,body,redirecturl,templet,userip,bigpic) select case when aid>'0' then '$xid' else '' end,$totype,body,redirecturl,templet,userip,bigpic from `{$typeInfos['addtable']}` WHERE aid='{$row[$idtype]}' "); $okids[] = $row[$idtype]; $j++; } } // 更新HTML foreach($okids as $aid) { $arc = new Archives($aid); $arc->MakeHtml(); } ShowMsg("成功复制 $j 个文档!", $ENV_GOBACK_URL); exit(); } }

以上步骤完成后,您就可以在Dedecms后台使用复制文档的功能了。