如何在dedecms中删除文章并同时删除其关联的图片?
- 行业动态
- 2024-10-18
- 1
在DedeCMS中,删除文章时同时删除图片可以通过修改数据库或使用插件实现。
在DedeCMS中删除文章的同时删除文章中的图片,可以通过修改系统核心文件来实现,以下是具体步骤和代码示例:
1、修改/include/extend.func.php文件:
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; }
2、修改/dede/inc/inc_batchup.php文件:
在$arcRow = $dsql>GetOne($arcQuery);下方添加:
$arcBodyRow = GetArcBody($aid);
在return true;上方添加:
//解析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 结果:删除成功! 时间:$executetime"; else $msg = " 位置:$file 结果:删除失败! 时间:$executetime"; } else $msg = " 位置:$file 结果:文件不存! 时间:$executetime"; WriteToDelFiles($msg); }//END foreach } else { $msg = " 未在Body中解析到数据 Body原始数据:$arcBodyRow[body] 时间:$executetime"; WriteToDelFiles($msg); }
3、相关问答FAQs:
Q1: DedeCMS删除文章时如何确保同时删除文章中的所有图片?
A1: 通过修改DedeCMS的核心文件,可以在删除文章时同步删除文章中的所有图片,具体操作包括修改/include/extend.func.php文件以获取文章中的图片地址,并在/dede/inc/inc_batchup.php文件中添加代码来删除这些图片。
Q2: 在DedeCMS中删除文章时,如何记录删除操作的日志?
A2: 在/include/extend.func.php文件中添加WriteToDelFiles函数,用于将删除操作的日志信息写入del_body_file.txt文件,这样,每次删除文章时,都会在日志文件中记录下相关信息。
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/344213.html