• 网站认证
  • 教程:4,777|
  • 话题:3738|
  • 评论:45|
  • 会员:176|
  • 注册
  • 查看作者
  • 织梦dedecms删除文章的同时删除该文章下的图片和附件

    织梦在发布文章的时候,难免需要一些图片等等让文章更丰富,但是在删除的时候也有了一定的复杂度。这次就分享一个很实用的功能,删除织梦文章的同时删掉该文章下的图片与附件等文件,有效的节省了后期慢慢排除无用图片和附件的时间还实时节省了一些不必要的存储空间。

    实现方法如下:

    1.打开/include/extend.func.php文件,在最后加入如下代码

    //解析body数据,获得所有图片的绝对地址
    functionGetPicsTruePath($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($picspathas$tmppath)
    {
    $path=GetTruePath();//获得绝对路径
    $picpath=preg_replace("/[a-zA-z]+:\\/\\/[^|\\/|\\s]*/",'',$tmppath);//去掉网址部分
    $path.=$picpath;
    $delfiles[]=$path;//保存处理后的数据
    }
    return$delfiles;
    }
    //获得文章Body数据
    functionGetArcBody($aid)
    {
    global$dsql;
    $query="SELECTjs_addonarticle.bodyFROMxmzy_addonarticleWHERExmzy_addonarticle.aid='$aid'";
    $row=$dsql->GetOne($query);
    if(is_array($row))
    return$row;
    else
    returnfalse;
    }//mobantianxia.cn修改于2010.01.28
    //写入日志文件
    functionWriteToDelFiles($msg)//删除文章的时候会通过此函数记录日志
    {
    if(empty($msg))$savemsg="未获得消息";
    else$savemsg=$msg;
    $errorFile=dirname(__FILE__).'/../data/del_body_file.txt';//删除记录文件
    $fp=@fopen($errorFile,'a');
    @fwrite($fp,"{$savemsg}");
    @fclose($fp);
    }

    2.打开dede/inc/inc_batchup.php文件,找到:

    $arcRow=$dsql->GetOne($arcQuery);

    在下边添加:

    $arcBodyRow=GetArcBody($aid);

    最后找到:

    returnTRUE;

    在这句话上边添加:

    //解析Body中的资源,并删除
    $willDelFiles=GetPicsTruePath($arcBodyRow['body'],$arcRow['litpic']);
    $nowtime=time();
    $executetime=MyDate('Y-m-dH:i:s',$nowtime);
    //获得执行时间
    $msg="文章标题:$arcRow[title]";
    WriteToDelFiles($msg);
    if(!empty($willDelFiles))
    {
    foreach($willDelFilesas$file)
    {
    if(file_exists($file)&&!is_dir($file))
    {
    if(unlink($file))$msg="位置:$file结果:删除成功!时间:$executetime";else$msg="位置:$file结果:删除失败!时间:$executetime";
    }
    //mobantianxia.cn修改于2010.01.28else$msg="位置:$file结果:文件不存!时间:$executetime";
    WriteToDelFiles($msg);
    }
    //ENDforeach
    }else
    {
    $msg="未在Body中解析到数据Body原始数据:$arcBodyRow[body]时间:$executetime";
    WriteToDelFiles($msg);
    }

    到此就结束了,删除了文章会连带当前文章的图片和附件一气删除。

  • 0
  • 0
  • 0
  • 654
  • 请登录之后再进行评论

    登录
  • 做任务
  • 实时动态
  • 偏好设置
  • 自定义-1
  • 单栏布局 侧栏位置: