dedecms删除文章同时也删除附件的修改方法

dedecms删除文章同时也删除附件的修改方法,使用dedecms的朋友可以参考下。
首先添加两个函数

代码如下:
/*
根据文档id获取文档的body部分
*/
function getArcBody($arcid)
{
global $dsql;
if(empty($arcid)) return ;
$body = '';
$query = "select arc.*,ch.addtable,ch.fieldset from `dede_arctiny` as arc left join `dede_channeltype` as ch on arc.channel=ch.id where arc.id=$arcid";
$row = $dsql->GetOne($query);
if(empty($row)) return ;
$addtable = $row['addtable'];
$fieldset = $row['fieldset'];
include_once(DEDEINC.'./dedetag.class.php');
$dtp = new DedeTagParse();
$dtp->SetNameSpace('field','<','>');
$dtp->LoadSource($fieldset);
if(is_array($dtp->CTags))
{
foreach($dtp->CTags as $tid=>$tag)
{
if($tag->GetAtt('type')=='htmltext')
{
$body = $tag->GetName();
break;
}
}
}
if(!empty($body))
{
$query = "select $body from `$addtable` where aid=$arcid";
$row = $dsql->GetOne($query);
$body = $row[$body];
return $body;
}
return ;
}
/*
解析文档内容的本地图片图片
*/
function get_img_from_body($body)
{
$result = array();
if(empty($body))
return $result;
preg_match_all('/\ssrc=([\"|\'])([^\1]*?)\.(gif|jpg|jpeg|png)\1/',$body,$res);
if(!empty($res[2]))
{
foreach($res[2] as $k=>$v)
{
$result[] = $v.'.'.$res[3][$k];
}
}
return $result;
}

把这段代码贴到include/common.func.php后面,
接着打开后台(假设使用默认的dede作为后台)dede/inc/inc_batchup.php文件,
在第22行添加代码如下:
$body = getArcBody($aid);
接在在第139行,就是在
return true;
上面一行加上下面的代码

代码如下:
if($body)
{
$img_arr = get_img_from_body($body);
if(!empty($img_arr))
{
foreach($img_arr as $v)
{
$img_file = GetTruePath().str_replace($GLOBALS['cfg_basehost'],'',$v);
if(file_exists($img_file) && !is_dir($img_file))
@unlink($img_file);
}
}
}

这样就可以实现删除文档的时候删除字段为“htmltext”类型的中的本地图片了。

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

计划永远赶不上需求,DedeCMS为我们考虑得非常全面,但并不是,所有的都是我们需要的,在5.7 sp1中,织梦DedeCMS删除文章时会同时删除生成的HTML与文章的附件图片等,但是我现在却需要不删除这些些东西,这就需要修改源码了,找了半天才找到在哪里。 打开/ded
前段时间因为采集多了很多文章,被百度K了站点,在后台删除太慢,于是乎用mysql直接删除了,但是出现了一些问题,可能是没删除干净。 dede_archives表里面删除了,但是还有一个表,
有时我们删除文章后,这篇文章内的缩略图和内容图片会留在/uploads/allimg里面,这些图片没有用了,也很占空间,那么我们就需要在删除文章的同时删除缩略图和内容大图
dedecms5.5前台会员发布的信息在删除时总是不能删除附件,在这里以普通文章图片附件为例跟大家交流一下。
最新dedecms5.6删除文章对应删除图片 本代码没改dede代码!只加了删除方法到里面!覆盖就可以了!覆盖时备份好文件!
DELETE FROM dede_addonarticle WHERE aid = 1000 and aid=2000;DELETE FROM dede_arctiny WHERE id = 1000 and id=2000;DELETE FROM dede_archives WHERE id = 1000 and id=2…