如何在DEDE 5.6中删除文章及其附件?

DEDE 5.6中,要删除文章并同时删除附件,可以通过修改数据库或编写自定义脚本实现。

在DEDECMS 5.6中,删除文章的同时删除附件的方法如下:

如何在DEDE 5.6中删除文章及其附件?

1、修改include/extend.func.php文件

打开/include目录下的extend.func.php文件。

在文件末尾添加以下三个函数:

“`php

// 解析body数据,获得所有图片的绝对地址

function GetPicsTruePath($body, $litpic) {

$delfiles = array(); // 存储图片地址数据

if (!empty($litpic)) {

$litpicpath = GetTruePath();

$litpicpath .= $litpic;

$delfiles[] = $litpicpath; // 缩略图地址

}

preg_match_all("/src=["|’|S|s]([^|\/|>]*){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 #@__addonarticle.body FROM #@__addonarticle WHERE #@__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);

}

“`

2、修改dede/inc/inc_batchup.php文件

打开/dede/inc/inc_batchup.php文件。

在第33行下方(即$arcRow = $dsql>GetOne($arcQuery);下方)添加以下代码:

“`php

$arcBodyRow = GetArcBody($aid);

“`

在第102行下方(即if (@is_file($filenameh)) @unlink($filenameh);下方)添加以下代码:

“`php

// 解析Body中的资源,并删除

$willDelFiles = GetPicsTruePath($arcBodyRow[‘body’], $arcRow[‘litpic’]);

$nowtime = time();

$executetime = MyDate(‘Ymd H:i:s’, $nowtime); // 获得执行时间

$msg = "文章" . $arcRow[‘title’];

WriteToDelFiles($msg);

if (!empty($willDelFiles)) {

foreach ($willDelFiles as $file) {

if (file_exists($file) && !is_dir($file)) {

if (@unlink($file)) $msg = "位置:" . $file . "r

结果:删除成功!r

时间:" . $executetime;

else $msg = "位置:" . $file . "r

结果:删除失败!r

时间:" . $executetime;

} else $msg = "位置:" . $file . "r

结果:文件不存!r

时间:" . $executetime;

WriteToDelFiles($msg);

} //END foreach

} else {

$msg = "未在Body中解析到数据r

Body原始数据:" . $arcBodyRow[‘body’] . "r

时间:" . $executetime;

WriteToDelFiles($msg);

}

“`

通过上述步骤,可以实现在DEDECMS 5.6中删除文章的同时删除其相关的附件和图片,以下是相关问答FAQs:

FAQs:

1、Q: 如果在删除过程中遇到权限问题怎么办?

A: 如果在执行删除操作时遇到权限问题,确保运行脚本的用户对目标文件和目录具有足够的权限,可以尝试使用chmod命令修改文件权限,或者以管理员身份运行脚本。

2、Q: 如果需要保留某些特定的图片或附件,该如何修改代码?

A: 可以在GetPicsTruePath函数中添加逻辑判断,根据特定条件排除不需要删除的图片或附件,可以通过检查图片的文件名或其他属性来决定是否将其加入删除列表。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1108831.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希
上一篇 2024-09-30 13:19
下一篇 2024-09-30 13:20

相关推荐

  • Dede系统删除文章时出现错误,该如何解决?

    dede后台中,找到内容管理,选择要删除的文章,点击删除即可。

    2024-10-24
    013
  • 如何有效删除Dedecms中出错的文章?

    要删除Dedecms中出错的文章,请登录后台,进入内容管理,找到并选择错误文章,点击删除按钮即可。

    2024-10-24
    07
  • 如何在Dedecms 5.7中删除文章时自动移除图片和缩略图?

    在DedeCMS 5.7中,要删除文章时自动删除文章内的图片和缩略图,需要修改系统文件并添加自定义函数。具体步骤如下:,,1. **找到删除文章的函数**:, 打开 /dede/archives_article_do.php 文件。,,2. **添加自定义删除函数**:, 在文件中找到 delArc($aid) 函数,并在其内部添加代码来删除图片和缩略图。,,3. **示例代码**:, “php, function delArc($aid) {, // 删除文章内容中的图片和缩略图, $dsql = new DedeSql();, $dsql˃Execute(“DELETE FROM dede_addonarticle WHERE aid=’$aid'”);, $dsql˃Execute(“DELETE FROM dede_archives WHERE id=’$aid'”);, }, “,,4. **保存并上传文件**:, 将修改后的文件上传到服务器,覆盖原有文件。,,这样,当你在后台删除文章时,系统会自动删除文章内的所有图片和缩略图。

    2024-10-23
    09
  • 如何在织梦DedeCMS中删除文章而不删除HTML和附件图片?

    在织梦DedeCMS中,删除文章时不删除HTML和附件图片。

    2024-10-23
    014

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入