在DedeCMS中,删除文章时默认会将对应的HTML文件和附件图片一并删除,有时候我们可能只希望删除文章内容而不删除这些资源,以便保留历史数据或进行其他用途,本文将详细介绍如何在DedeCMS中实现这一功能。
实现步骤
1、备份数据库
在进行任何操作之前,务必先备份数据库,以防止误操作导致的数据丢失。
2、修改代码
需要对DedeCMS的源码进行一些修改,具体步骤如下:
找到/dede/archives_article_do.php
文件,这是处理文章删除的核心文件。
打开该文件,查找以下代码段:
if (empty($idlist)) return ''; $arcids = explode(',', $idlist); $dsql>ExecuteNoneQuery("DELETE FROM #@__archives WHERE id IN (" . $idlist . ")"); $dsql>ExecuteNoneQuery("DELETE FROM #@__addonarticle WHERE aid IN (" . $idlist . ")"); $dsql>ExecuteNoneQuery("DELETE FROM #@__archives_tagindex WHERE aid IN (" . $idlist . ")");
注释掉或者移除上述删除语句,替换为以下代码:
if (empty($idlist)) return ''; $arcids = explode(',', $idlist); $dsql>ExecuteNoneQuery("UPDATE #@__archives SET isdel=1 WHERE id IN (" . $idlist . ")"); $dsql>ExecuteNoneQuery("UPDATE #@__addonarticle SET isdel=1 WHERE aid IN (" . $idlist . ")"); $dsql>ExecuteNoneQuery("UPDATE #@__archives_tagindex SET isdel=1 WHERE aid IN (" . $idlist . ")");
保存文件并关闭编辑器。
3、更新缓存
登录后台管理界面,进入“系统设置” > “SQL命令运行器”,执行以下SQL命令以更新缓存:
DELETE FROM __cache WHERE type='common';
4、测试功能
删除一篇文章并检查是否成功保留了HTML文件和附件图片。
注意事项
修改代码前请确保已备份,以防万一出现问题可以恢复。
修改后的代码仅影响删除操作,不会对新增或编辑文章造成任何影响。
如果网站有多个栏目或频道,建议逐一检查各频道的删除逻辑,确保一致性。
FAQs
Q1: 修改后的文章如何彻底删除?
如果只是将文章标记为删除状态,可以通过以下SQL命令彻底删除:
DELETE FROM #@__archives WHERE isdel=1; DELETE FROM #@__addonarticle WHERE isdel=1; DELETE FROM #@__archives_tagindex WHERE isdel=1;
执行以上SQL命令后,被标记为删除状态的文章将被彻底从数据库中移除。
Q2: 是否可以选择性地删除某些字段而不是整个记录?
是的,可以根据需求选择性地删除某些字段,只删除文章主体内容而不删除标题,可以这样修改代码:
$dsql>ExecuteNoneQuery("UPDATE #@__archives SET body='' WHERE id IN (" . $idlist . ")");
这样可以保留文章的其他信息,如标题、作者等,而只清空文章的主体内容。
通过以上步骤,您可以在DedeCMS中实现删除文章时不删除HTML文件和附件图片的功能,这为网站的管理和数据保留提供了更多的灵活性。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1233356.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复