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

相关推荐

  • 如何在DedeCMS 5.6中实现删除文章时同时删除关联图片?

    在 dedecms 5.6 中,删除文章时同时删除图片可以通过修改文章内容模型的 delete 方法实现。具体操作如下:,,1. 打开 dedecms 5.6 安装目录下的 /dede/archives_article.php 文件;,2. 找到 delete($id) 方法;,3. 在该方法中添加代码以删除与文章关联的图片。,,以下是一个简单的示例代码:,,“php,function delete($id) {, // 原有删除文章的逻辑, $dsql = new DedeSql();, $dsql˃ExecuteNoneQuery(“DELETE FROM #@__archives WHERE id=’$id'”);,, // 删除与文章关联的图片, $specInfo = $this˃getOneArchiveSpecInfo($id);, if ($specInfo[‘body’] && strpos($specInfo[‘body’], ‘{dede:field name=”image”‘) !== false) {, preg_match(‘/{dede:field name=”image” value=”(.*?)”}/’, $specInfo[‘body’], $matches);, $imagePath = $matches[1];, if (file_exists(DEDEDATA . ‘/uploads/images/’ . $imagePath)) {, unlink(DEDEDATA . ‘/uploads/images/’ . $imagePath);, }, },},`,,这段代码首先执行原有的删除文章逻辑,然后检查文章的 body` 字段中是否包含图片字段。如果包含,就提取图片路径并删除对应的图片文件。

    2024-10-01
    07
  • 如何在织梦dedecms系统中同时删除文章、缩略图和内容大图?

    要实现在织梦dedecms系统中删除文章时同时删除缩略图和内容大图,你需要修改系统的文件。具体步骤如下:,,1. 找到并打开文件 /dede/archives_article_do.php。,2. 在文件中找到以下代码段:, “php, $dsql˃ExecuteNoneQuery(“DELETE FROM #@__archives WHERE id=’$aid(@me)'”);, `,3. 在该代码段下方添加以下代码:, `php, // 删除缩略图, $thumbImage = $cfg_basedir . “/uploads/images/” . $row[‘litpic’];, if (file_exists($thumbImage)) {, unlink($thumbImage);, }, , // 删除内容大图, preg_match(‘/src=”(.*?\/uploads\/images\/.*?\.jpg)”/i’, $row[‘body’], $matches);, if (!empty($matches[1])) {, $contentImage = $cfg_basedir . $matches[1];, if (file_exists($contentImage)) {, unlink($contentImage);, }, }, “,4. 保存文件并上传回服务器。,,通过以上步骤,你可以在删除文章时同时删除缩略图和内容大图。

    2024-09-28
    08
  • 如何在DEDE 5.6中同时删除文章及其附件?

    在DEDE 5.6中,要删除文章同时删除附件,可以在删除文章时勾选“删除附件”选项。

    2024-10-10
    02
  • 如何在dedecms中删除文章并同时删除其关联的图片?

    在DedeCMS中,删除文章时同时删除图片可以通过修改数据库或使用插件实现。

    2024-10-18
    03

发表回复

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

免费注册
电话联系

400-880-8834

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