Maison > Article > Tutoriel CMS > Comment supprimer des images de documents dans Dede
Comment supprimer des images de documents dans Dede ?
Dede supprime le document et supprime les images dans l'article. Cette fonction est très importante pour les amis qui créent des sites Web d'images, surtout lors de la suppression des articles collectés, cela générera beaucoup d'images inutiles. Le programme ne garantit pas que 100% des images du corps pourront être obtenues, mais lors de mon utilisation personnelle, je n'ai trouvé aucun problème.
Apprentissage recommandé : Dreamweaver cms
Tout d'abord, créez le fichier "extend.func.php" dans le répertoire "/include". Ensuite, enregistrez le contenu suivant dans. Il y a trois fonctions dans le fichier "extend.func.php" :
Le code est le suivant :
//解析body数据,获得所有图片的绝对地址 function GetPicsTruePath($body,$litpic) { $delfiles = array();//存储图片地址数据 if(!empty($litpic)) { $litpicpath = GetTruePath(); $litpicpath .= $litpic; $delfiles[] = $litpicpath;//缩略图地址 } preg_match_all("/src=[\"|'|\S|\s]([^ title="liehuo.net" |\/|>]*){0,}(([^>]*)\.(gif|jpg|png))/isU",$body,$tmpdata); $picspath = array_unique($tmpdata[2]);//body中所有图片的地址 foreach($picspath as $tmppath) { $path = GetTruePath();//获得绝对路径 $picpath = preg_replace("/[a-zA-z]+:\/\/[^ |\/|\s]*/",'',$tmppath);//去掉网址部分 $path .=$picpath; $delfiles[] = $path;//保存处理后的数据 } return $delfiles; } //获得文章Body数据 function GetArcBody($aid) { global $dsql; $query = "SELECT [url=mailto:dede_addonarticle.body]dede_addonarticle.body[/url] FROM [url=mailto:%60dede_addonarticle]`dede_addonarticle[/url]` WHERE [url=mailto:dede_addonarticle.aid]dede_addonarticle.aid[/url] = '$aid'"; $row = $dsql->GetOne($query); if(is_array($row)) return $row; else return false; } //写入日志文件 function WriteToDelFiles($msg)//删除文章的时候会通过此函数记录日志 { if(empty($msg)) $savemsg="未获得消息"; else $savemsg = $msg; $errorFile = dirname(__FILE__).'/../data/del_body_file.txt';//删除记录文件 $fp = @fopen($errorFile, 'a'); @fwrite($fp,"\r\n{$savemsg}"); @fclose($fp); }
Ouvrez ensuite le fichier "/dede/inc/inc_batchup.php".
1 : Ajoutez sous la ligne 33, c'est-à-dire sous "$arcRow = $dsql->GetOne($arcQuery);":
$arcBodyRow = GetArcBody($aid); 🎜>
2 : Ajoutez en dessous de la ligne 138, c'est-à-dire au-dessus de "return true;" : Le code est le suivant ://解析Body中的资源,并删除 $willDelFiles = GetPicsTruePath($arcBodyRow['body'],$arcRow['litpic']); $nowtime = time(); $executetime = MyDate('Y-m-d H:i:s',$nowtime);//获得执行时间 $msg = "\r\n文章标题:$arcRow[title]"; WriteToDelFiles($msg); if(!empty($willDelFiles)) { foreach($willDelFiles as $file) { if(file_exists($file) && !is_dir($file)) { if(unlink($file)) $msg = "\r\n位置:$file\r\n结果:删除成功!\r\n时间:$executetime"; else $msg = "\r\n位置:$file\r\n结果:删除失败!\r\n时间:$executetime"; } else $msg = "\r\n位置:$file\r\n结果:文件不存!\r\n时间:$executetime"; WriteToDelFiles($msg); }//END foreach } else { $msg = "\r\n未在Body中解析到数据\r\nBody原始数据:$arcBodyRow[body]\r\n时间:$executetime"; WriteToDelFiles($msg); }À ce stade, toutes les modifications sont terminées. Lors de la suppression de l'article, le programme analysera l'adresse de l'image dans le corps, puis la supprimera et générera un fichier journal : del_body_file.txt dans le répertoire /data/.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!