DEDE CMS是一款广泛应用于网站内容管理的系统,它为站长提供了便捷的文章更新功能。然而,在日常维护过程中,有时需要删除文章,但文章中的省略图和附件却可能仍然保留在服务器空间中。这种情况不仅占用主机存储资源,还可能导致不必要的混乱。为了优化服务器空间使用,本文将介绍如何在删除DEDECMS文章时,同步删除其关联的省略图和附件。

首先,我们需要进入DEDECMS的控制面板,并找到文件管理选项。

接着,定位到站点的根目录。

然后,找到并编辑程序路径下的文件:/dede/inc/inc_batchup.php。

接下来进行代码修改:

// 删除数据库的内容
// 删除缩略图
if ($arcRow['litpic'] != "") {
    $dsql->ExecuteNoneQuery("Delete From sq_uploads where url='$arcRow[litpic]'");
    $truedir = GetTruePath($arcRow['siterefer'], $arcRow['sitepath']);
    $litpicfile = $truedir . $arcRow['litpic'];
    @unlink($litpicfile);
}

// 删除大图
$arcbodyQuery = "Select * from " . $arcRow['addtable'] . " where aid='$aid'";
$arcbodyRow = $dsql->GetOne($arcbodyQuery);
$imgsrcarray = GetImageSrc($arcbodyRow['body']);

foreach ($imgsrcarray as $v) {
    if ((trim($v) != "") && (!eregi("^http://", $v))) {
        $dsql->ExecuteNoneQuery("Delete From sq_uploads where url='$v'");
        $truedir = GetTruePath($arcRow['siterefer'], $arcRow['sitepath']);
        $picfile = $truedir . $v;
        @unlink($picfile);
    }
}

在上述代码中,我们首先添加了删除缩略图的功能。如果文章存在缩略图,则会从数据库和服务器中移除对应的文件。随后,通过循环处理,逐一删除与文章相关的大图。

继续查找以下SQL语句:

Select a.ID,a.title,a.typeid,

将其修改为:

Select a.ID,a.title,a.typeid,a.litpic,

最后,在文件末尾添加一个用于获取图片路径的函数:

// 删除文章同时删除大图函数
function GetImageSrc($body) {
    if (!isset($body)) return;
    else {
        preg_match_all("/<(img|IMG)(.*)(src|SRC)=[\\"|'|]{0,}([h|/].*(jpg|JPG|gif|GIF))[\\"|'|s]{0,}/isU", $body, $out);
        return $out[4];
    }
}

完成以上步骤后,保存并退出编辑。此时,每当您在DEDECMS后台删除一篇文章时,系统将自动清理相关的省略图和附件文件,从而有效节省服务器空间。

通过这种方法,您可以更加高效地管理网站内容,确保服务器资源得到合理利用。希望这篇教程对您有所帮助!