在DedeCMS(织梦内容管理系统)中,增加批量删除采集内容的方法可以通过以下步骤实现:
修改数据库表结构
确保你的数据库表结构支持批量操作,你需要一个字段来标记哪些内容是批量删除的,可以添加一个is_deleted
字段。
ALTER TABLEdede_archives
ADD COLUMNis_deleted
TINYINT(1) NOT NULL DEFAULT '0';
修改后台管理界面
修改DedeCMS后台管理界面,以便能够选择和批量删除内容。
a. 修改列表页面
找到并编辑/templets/default/plus/list_main.htm
文件,添加一个复选框列:
<th width="50"><input type="checkbox" id="checkAll" onclick="checkAll(this)"></th>
b. 修改列表数据获取逻辑
找到并编辑/include/model/archives_model.php
文件,修改获取列表数据的函数,使其支持批量操作。
function GetList($where, $orderby = '', $pagesize = 10, $page = 1, $fields = '*') {
// 原有代码...
$sql = "SELECT $fields FROM#@__archives
WHERE $where AND is_deleted=0";
// 原有代码...
}
添加批量删除功能
a. 创建批量删除表单
在/templets/default/plus/list_main.htm
文件中,添加一个批量删除表单:
<form action="{dede:global.cfg_cmsurl}/plus/list_do.php" method="post" name="batchDeleteForm"> <input type="hidden" name="action" value="batchDelete"> <!-其他隐藏字段 --> </form>
b. 处理批量删除请求
在/include/model/archives_model.php
文件中,添加处理批量删除请求的逻辑:
function batchDelete($ids) {
global $dsql;
$ids = array_map('intval', explode(',', $ids));
$dsql->Execute("UPDATE#@__archives
SET is_deleted=1 WHERE aid IN ('".implode("','", $ids)."')");
}
c. 修改控制器处理逻辑
在/include/controller/list_do.php
文件中,添加对批量删除的处理:
if ($dopost == 'batchDelete') { $ids = $_POST['ids']; // 假设前端传递了一个名为'ids'的参数 if (!empty($ids)) { $archives_model->batchDelete($ids); echo "<script>alert('批量删除成功');location.href='?m=list&a=index';</script>"; } else { echo "<script>alert('请选择要删除的内容');history.back();</script>"; } }
更新前端JavaScript
确保前端JavaScript能够正确处理批量删除操作,可以在/templets/default/plus/list_js.js
文件中添加如下代码:
function checkAll(obj) { var checkboxes = document.getElementsByName('ids[]'); for (var i = 0; i < checkboxes.length; i++) { checkboxes[i].checked = obj.checked; } }
测试与优化
完成上述步骤后,进行测试以确保批量删除功能正常工作,根据需要进一步优化和调整代码。
通过以上步骤,你可以在DedeCMS中增加批量删除采集内容的功能,如果有任何问题或需要进一步的帮助,请随时提问。