我们已经准备好了,你呢?

我们与您携手共赢,为您的企业形象保驾护航!

当前位置: 首页 > 问答 > 如何在Dede中删除文档及其附带图片?

在DedeCMS中,删除文档时会自动删除文章中的图片。

在DedeCMS中,删除文档的同时删除文章中的图片是一项非常实用的功能,这不仅有助于节省服务器空间,还能避免手动清理无用图片的麻烦,以下是实现这一功能的详细步骤和相关代码示例:

第一步:创建extend.func.php文件

1、创建文件:在/include目录下创建一个名为extend.func.php的文件。

2、编写函数:将以下内容保存到extend.func.php文件中,这些函数用于解析文章的body数据,获得所有图片的绝对地址,并记录日志。

// 解析body数据,获得所有图片的绝对地址function GetPicsTruePath($body, $litpic) {    $delfiles = array(); // 存储图片地址数据    if (!empty($litpic)) {        $litpicpath = GetTruePath();        $litpicpath .= $litpic;        $delfiles[] = $litpicpath; // 缩略图地址    }    preg_match_all("/src=["|'|S|s]([^ title=liehuo.net |/|>]*){0,}(([^>]*).(gif|jpg|png))/isU", $body, $tmpdata);    $picspath = array_unique($tmpdata[2]); // body中所有图片的地址    foreach ($picspath as $tmppath) {        $path = GetTruePath(); // 获得绝对路径        $picpath = preg_replace("/[azAz]+://[^ |/|s]*/", '', $tmppath); // 去掉网址部分        $path .= $picpath;        $delfiles[] = $path; // 保存处理后的数据    }    return $delfiles;}// 获得文章Body数据function GetArcBody($aid) {    global $dsql;    $query = "select dede_addonarticle.body FROM dede_addonarticle WHERE dede_addonarticle.aid = '$aid'";    $row = $dsql>GetOne($query);    if (is_array($row)) {        return $row;    } else {        return false;    }}// 写入日志文件function WriteToDelFiles($msg) { // 删除文章的时候会通过此函数记录日志    if (empty($msg)) {        $savemsg = "未获得消息";    } else {        $savemsg = $msg;    }    $errorFile = dirname(__FILE__) . '/../data/del_body_file.txt'; // 删除记录文件    $fp = @fopen($errorFile, 'a');    @fwrite($fp, "r{$savemsg}");    @fclose($fp);}

第二步:修改inc_batchup.php文件

1、打开文件:找到并打开/dede/inc/inc_batchup.php文件。

2、添加代码:在$arcRow = $dsql>GetOne($arcQuery);下方添加以下代码:

$arcBodyRow = GetArcBody($aid);

3、继续添加代码:在return true;上方添加以下代码:

// 解析Body中的资源,并删除$willDelFiles = GetPicsTruePath($arcBodyRow['body'], $arcRow['litpic']);$nowtime = time();$executetime = MyDate('Ymd H:i:s', $nowtime); // 获得执行时间$msg = "r文章标题:" . $arcRow['title'] . "";WriteToDelFiles($msg);if (!empty($willDelFiles)) {    foreach ($willDelFiles as $file) {        if (file_exists($file) && !is_dir($file)) {            if (unlink($file)) {                $msg = "r位置:" . $file . "r结果:删除成功!r时间:" . $executetime;            } else {                $msg = "r位置:" . $file . "r结果:删除失败!r时间:" . $executetime;            }        } else {            $msg = "r位置:" . $file . "r结果:文件不存!r时间:" . $executetime;        }        WriteToDelFiles($msg);    } // END foreach} else {    $msg = "r未在Body中解析到数据rBody原始数据:" . $arcBodyRow['body'] . "r时间:" . $executetime;    WriteToDelFiles($msg);}

FAQs

Q1: 如何验证是否成功删除了文章及其图片?

A1: 你可以通过查看位于/data/目录下的日志文件del_body_file.txt来验证删除操作的结果,该文件会记录每次删除操作的详细信息,包括文章标题、图片路径、删除结果及时间。

Q2: 如果在删除过程中遇到图片无法删除的情况怎么办?

A2: 如果某个图片文件无法删除,可能是由于权限问题或文件被占用,你可以检查文件的权限设置,确保PHP进程有权限删除该文件,如果问题依然存在,可以尝试手动删除该文件或者联系系统管理员解决。

步骤 操作 说明
1 打开DedeCMS后台管理 登录到DedeCMS后台,找到文档管理模块。
2 选择文档 在文档列表中找到需要删除的文档,点击选择。
3 编辑文档 点击“编辑”按钮,进入文档编辑页面。
4 选中图片 在文档内容中找到需要删除的图片,点击选中。
5 删除图片 按住鼠标左键,拖动图片到回收站或者右键点击图片选择“删除”。
6 保存文档 点击“保存”按钮,保存对文档所做的修改。
7 删除文档 返回文档列表页面,选中该文档,点击“删除”按钮。
8 确认删除 在弹出的确认窗口中选择“确定”,确认删除文档。
9 删除图片 在删除文档的同时,系统会自动删除文档中引用的所有图片。
10 完成操作 文档及其中的图片已经被成功删除。

步骤是基于DedeCMS后台操作的通用指南,具体操作可能因DedeCMS版本或配置的不同而有所差异。

免责声明:本站内容(文字信息+图片素材)来源于互联网公开数据整理或转载,仅用于学习参考,如有侵权问题,请及时联系本站删除,我们将在5个工作日内处理。联系邮箱:chuangshanghai#qq.com(把#换成@)

我们已经准备好了,你呢?

我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

132-7207-3477

上班时间

周一到周五 09:00-18:00

二维码
线