当前位置:首页 > 行业动态 > 正文

如何在织梦dedecms系统中删除文章时同时清除缩略图和内容大图?

织梦dedecms系统删除文章时,可通过修改arc.archives_data表的SQL语句,同时删除缩略图和内容大图。

在织梦CMS(DedeCMS)系统中,删除文章时通常不会自动删除与该文章相关的缩略图和内容大图,这会导致服务器上的图片文件占用不必要的空间,并且可能导致图片路径失效等问题,为了解决这个问题,我们需要对系统进行一些修改。

修改方法概述

1、找到相关文件:找到DedeCMS的核心文件和模型文件。

2、编辑文件:打开并编辑这些文件,添加删除图片的逻辑。

3、测试功能:确保修改后的代码能够正常运行,并在删除文章时同时删除相关图片。

详细步骤

第一步:备份文件

在进行任何修改之前,请务必备份相关文件,以防出现问题时可以还原。

第二步:找到相关文件

需要修改的文件主要有两个:

1、/dede/archives_article_do.php

2、/dede/archives_do.php

第三步:编辑文件

编辑/dede/archives_article_do.php

在这个文件中,我们需要添加删除文章的缩略图和内容大图的逻辑,找到以下代码段:

if($dopost == 'del') {
    //... existing code ...
    if($dsql>ExecuteNoneQuery($sql)) {
        //... existing code ...
    }
}

在这段代码之后,添加以下代码:

if($dopost == 'del') {
    //... existing code ...
    if($dsql>ExecuteNoneQuery($sql)) {
        //... existing code ...
        
        $mainImagePath = $cfg_basedir . "/uploads/allimg/" . $id . "_0.jpg"; // 假设主图文件名格式为 id + "_0.jpg"
        $thumbImagePath = $cfg_basedir . "/uploads/allimg/" . $id . "_small.jpg"; // 假设缩略图文件名格式为 id + "_small.jpg"
        
        if (file_exists($mainImagePath)) {
            unlink($mainImagePath); // 删除主图
        }
        
        if (file_exists($thumbImagePath)) {
            unlink($thumbImagePath); // 删除缩略图
        }
    }
}

编辑/dede/archives_do.php

在这个文件中,我们也需要添加类似的逻辑,找到以下代码段:

if($dopost == 'del') {
    //... existing code ...
    if($dsql>ExecuteNoneQuery($sql)) {
        //... existing code ...
    }
}

同样,在这段代码之后,添加以下代码:

if($dopost == 'del') {
    //... existing code ...
    if($dsql>ExecuteNoneQuery($sql)) {
        //... existing code ...
        
        $mainImagePath = $cfg_basedir . "/uploads/allimg/" . $aid['id'] . "_0.jpg"; // 假设主图文件名格式为 id + "_0.jpg"
        $thumbImagePath = $cfg_basedir . "/uploads/allimg/" . $aid['id'] . "_small.jpg"; // 假设缩略图文件名格式为 id + "_small.jpg"
        
        if (file_exists($mainImagePath)) {
            unlink($mainImagePath); // 删除主图
        }
        
        if (file_exists($thumbImagePath)) {
            unlink($thumbImagePath); // 删除缩略图
        }
    }
}

第四步:测试功能

完成上述修改后,上传修改后的文件到服务器,并进行测试,尝试删除一篇文章,检查是否同时删除了相关的缩略图和内容大图,如果一切正常,则修改成功。

常见问题解答 FAQs

问题1:修改后无法删除文章怎么办?

解答: 如果修改后无法删除文章,可能是由于代码错误或权限问题,请检查以下几点:

1、确保修改的代码没有语法错误。

2、确保服务器有权限删除指定路径下的文件。

3、查看服务器错误日志,寻找可能的错误信息。

问题2:如何确保修改不会影响其他功能?

解答: 为了确保修改不会影响其他功能,建议在本地环境中进行充分的测试,每次修改前都应该备份原始文件,以便在出现问题时可以还原,如果可能,可以在一个临时的、不影响生产环境的地方进行测试。

步骤 修改内容 说明
1 查找删除文章的函数 在dedecms系统的文章管理模块中找到处理删除文章的函数,通常是deleteArc()或类似的函数。
2 修改函数 在找到的函数中,添加代码来删除缩略图和内容大图。
3 添加删除缩略图的代码 在删除文章记录后,添加以下代码来删除缩略图:
“`php
if ($row[‘litpic’] != ”) {
$litpic_path =..Dedeiris .’/uploads/’ . date(‘Y/m’, $row[‘pubdate’]) . ‘/’ . $row[‘litpic’];
@unlink($litpic_path);
}
3 添加删除内容大图的代码 在删除文章记录后,添加以下代码来删除内容大图(如果有必要):
“`php
// 假设文章内容大图存储在特定的字段中,如’bigpic’
if ($row[‘bigpic’] != ”) {
$bigpic_path =..Dedeiris .’/uploads/’ . date(‘Y/m’, $row[‘pubdate’]) . ‘/’ . $row[‘bigpic’];
@unlink($bigpic_path);
}
4 保存修改 保存对删除文章函数的修改。
5 测试修改 在测试环境中测试删除文章的功能,确保缩略图和内容大图也被正确删除。
6 部署修改 在确保修改无误后,将修改部署到生产环境中。
0

随机文章