• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

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

    发布者: 浪子 | 发布时间: 2025-7-24 16:38| 查看数: 37| 评论数: 0|帖子模式

    首先添加两个函数 
                            复制代码
                            代码如下:
           
            /* 
            根据文档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”类型的中的本地图片了。 

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表