dedecms删除文章的同时删除图片附件方法

作者:袖梨 2022-06-25

下面这个技巧就是为了实现这个功能,但是不保证100%有效:

首先,在"/include"目录下建立"extend.func.php"文件. 然后,将以下内容保存在"extend.func.php"文件中,一共三个函数

接下来打开"/dede/inc/inc_batchup.php"文件。

1:在33行下方加入,也就是

 代码如下 复制代码
"$arcRow = $dsql->GetOne($arcQuery);"

下方:

 代码如下 复制代码

$arcBodyRow = GetArcBody($aid);

2:在138行下方加入,也就是"return true;"上方:


其它方法参考


打开dede/inc/inc_batchup.php

找到”//删除数据库的内容”
在这前面加上

 代码如下 复制代码

//删除缩略图
if($arcRow['litpic']!=”"){
$dsql->ExecuteNoneQuery(“Delete From #@__uploads where url=’$arcRow[litpic]‘”);
$truedir = GetTruePath($arcRow['siterefer'],$arcRow['sitepath']);
$litpicfile = $truedir.$arcRow['litpic'];
@unlink($litpicfile);
}
//删除大图
$arcbodyQuery = “Select * from “.$arcRow['addtable'].” where aid=’$aid’”;
$arcbodyRow = $dsql->GetOne($arcbodyQuery);
$imgsrcarray=GetImageSrc($arcbodyRow['body']);
foreach ($imgsrcarray as $v) {
if((trim($v)!=”")&&(!eregi(“^http://”,$v))){
$dsql->ExecuteNoneQuery(“Delete From #@__uploads where url=’$v’”);
$picfile = $truedir.$v;
@unlink($picfile);
}
}

//删除数据库的内容

第二处:
找到

 代码如下 复制代码
Select #@__archives.ID,#@__archives.title,#@__archives.typeid
改为:
Select #@__archives.ID,#@__archives.title,#@__archives.typeid,#@__archives.litpic

第三处:
在文件最后加上一函数

 代码如下 复制代码

//获得内容中的图像地址

function GetImageSrc($body){
if( !isset($body)) return ”;
else{
preg_match_all (“/<(img|IMG)(.*)(src|SRC)=["|'|]{0,}([h|/].*(jpg|JPG|gif|GIF))["|'|s]{0,}/isU”,$body,$out);
return $out[4];
}
}

相关文章

精彩推荐