如何实现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;

$i***ake = $row>i***ake;

$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['i***ake'] = 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后台添加批量***栏目文档的功能,从而提高内容管理的效率。

    广告一刻

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