在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
文件,这样,每次删除文章时,都会在日志文件中记录下相关信息。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1222806.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复