如何在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

相关推荐

发表回复

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

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