如何实现DEDE后台栏目文档的批量复制功能?

avatar
作者
猴君
阅读量:0
DEDE 后台新增了栏目文档的批量复制功能,方便用户快速复制多个文档。

在DEDE(织梦)CMS系统中,后台批量复制栏目文档的功能是一项非常实用的功能,这一功能可以帮助管理员快速将一个栏目的所有文档复制到另一个栏目中,而无需手动一个个地重新建立,这不仅节省了大量时间,还提高了工作效率,以下是实现这一功能的步骤:

如何实现DEDE后台栏目文档的批量复制功能?

修改文件dede/templets/content_batch_up.htm

1、修改头部脚本函数ShowHideMove()

```javascript

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";

}

}

```

2、添加复制栏目按钮

在以下代码段的后面添加一个新的输入框,用于复制栏目文档:

```html

<input name="action" type="radio" class="np" value="move" id="moveradio" onClick="ShowHideMove()" />

移动文档

<!add this line >

<input name="action" type="radio" class="np" value="copy" id="copyradio" onClick="ShowHideMove()" />

复制栏目文档

```

修改文件dede/content_batch_action.php

1、删除文件最后的两段代码

这两段代码是官方人员重复添加的,需要将其删除:

```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、添加复制栏目文章功能

在文件末尾添加以下代码段:

```php

如何实现DEDE后台栏目文档的批量复制功能?

//start 添加复制栏目文章功能 added by adan;090508

else if($action=='copy') {

if(empty($typeid)) {

ShowMsg('该操作必须指定栏目!','javascript:;');

exit();

}

$typeold = $dsql>GetOne("Select * Fromdede_arctype where id='$typeid'; ");

$typenew = $dsql>GetOne("Select * Fromdede_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 Fromdede_channeltype where id={$typenew['channeltype']} ");

$addtable = $ch['addtable'];

$dsql>SetQuery("Select * Fromdede_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; // r

}

```

修改文件dede/js/list.js

如何实现DEDE后台栏目文档的批量复制功能?

1、添加复制函数

在文件中找到function moveArc(e, obj, cid)函数,并在其上方添加新的copyArc函数:

```javascript

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');

}

```

修改文件dede/templets/content_list.htm和dede/templets/content_i_list.htm

1、添加复制链接

在文件中找到以下代码:

```html

<a href="javascript:;" onClick="moveArc(event,this,<?php echo (empty($channelid) ? 0 : $channelid); ?>)" class="coolbg"> 移动 </a>

```

并在其下方添加:

```html

<a href="javascript:;" onClick="copyArc(event,this,<?php echo (empty($channelid) ? 0 : $channelid); ?>);" class="coolbg"> 复制 </a>

```

通过以上步骤,您就可以在DEDE后台实现栏目文档的批量复制功能,从而大大提高工作效率,希望这些步骤对您有所帮助,如果有任何疑问,请随时咨询相关技术支持。


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

1. 引言

在DedeCMS(帝国CMS)的后台管理中,批量复制栏目文档是一个提高工作效率的重要功能,以下将详细说明如何在DEDE后台添加这一功能。

2. 准备工作

在开始添加批量复制功能之前,请确保以下条件已经满足:

已经安装并配置好DedeCMS系统。

熟悉DedeCMS的后台操作流程。

3. 功能实现步骤

3.1 创建批量复制脚本

1、新建文件:在DedeCMS的根目录下,创建一个新文件,例如batch_copy.php

2、:在batch_copy.php 文件中,编写以下PHP代码:

 <?php require_once(dirname(__FILE__).'/config.php'); if(!defined('DEDEINC')) exit("Error!");   // 获取要复制的栏目ID $copycid = $_POST['copycid'];   // 获取要复制的文档ID $docids = $_POST['docids'];   // 检查栏目ID和文档ID是否为空 if(empty($copycid) || empty($docids)) {     echo "请选择要复制的栏目和文档。";     exit; }   // 连接数据库 $db = $dsql>connect();   // 循环复制文档 foreach($docids as $docid) {     $row = $dsql>GetOne("SELECT * FROM#@__archives WHERE aid='$docid'");     if($row) {         $row['arcrmid'] = '';         $row['ismake'] = 0;         $row['arcatt'] = '';         $row['arcurl'] = '';         $row['pubdate'] = time();         $row['id'] = '';         $row['litpic'] = '';         $row>channelid = $copycid;         $dsql>AutoExecute("#@__archives", $row, "INSERT");     } }   echo "批量复制完成。"; ?>

3.2 创建批量复制表单

1、登录后台:进入DedeCMS后台管理界面。

2、栏目管理:选择需要复制的目标栏目。

3、添加表单:在目标栏目管理页面,添加一个表单,用于选择要复制的文档。

 <form action="batch_copy.php" method="post">     <input type="hidden" name="copycid" value="目标栏目ID">     <select name="docids[]" multiple>         <!循环显示文档列表 >         <option value="文档ID1">文档标题1</option>         <option value="文档ID2">文档标题2</option>         <!... >     </select>     <input type="submit" value="批量复制"> </form>

3.3 测试功能

1、提交表单:填写好表单后,点击“批量复制”按钮。

2、检查结果:查看目标栏目是否已成功复制所选文档。

4. 注意事项

确保脚本文件batch_copy.php 的路径正确。

注意数据库连接配置,确保正确连接到数据库。

脚本执行过程中,注意检查是否有任何错误信息输出。

5. 归纳

通过以上步骤,您可以在DEDECMS后台添加批量复制栏目文档的功能,从而提高内容管理的效率。

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!