DEDE删除文章同时删除附件解决代码

DEDE删除文章同时删除附件解决代码

/*
根据文档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;

上面一行加上下面的代码  DEDE技术吧-598080707.NET

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”类型的中的本地图片了

时间: 2024-08-02 08:55:05

DEDE删除文章同时删除附件解决代码的相关文章

dedecms 删除文章同时删除缩率图以及文章图片

dedecms 删除文章同时删除缩率图以及文章图片 测试5.6版本 我用的是gbk 方法: 这里我还是把完整的代码放出来 省的大家看不懂,遭到大家的火炮攻击 呵呵 我贴代码之前 大家一定要记着一定要按照我说的走,没有按照我说的走的,出问题,别骂我,我先声明,如果按照我说的走,出问题了,你随便骂我,我不还口,不废话了 贴代码 首先,在"/include"目录下打开"extend.func.php教程"文件. 然后,将以下内容保存在"extend.func.p

ASP.NET MVC5网站开发修改及删除文章(十)_实用技巧

上次做了显示文章列表,再实现修改和删除文章这部分内容就结束了,这次内容比较简单,由于做过了添加文章,修改文章非常类似,就是多了一个TryUpdateModel部分更新模型数据.一.删除文章 由于公共模型跟,文章,附件有关联,所以这里的删除次序很重要,如果先删除模型,那么文章ModelID和附件的ModelID多会变成null,所以要先先删除文章和附件再删除公共模型. 由于公共模型和附件是一对多的关系,我们把删除公共模型和删除附件写在一起. 在BLL的BaseRepository类中有默认的Del

jquery 实现删除文章提示是否删除

 为了更好的用户体验,当用户在删除文章的时候给出一个提醒的功能,提示他是否删除这篇文章.具体实现代码如下: html代码: <a link="{:U('Athlete/del/',array('uid'=>$vo['id']))}" href="javascript:void(0)" name="{$vo.name}" class="del">删除 </a> jquery代码: <scrip

PHP删除文章时同时删除生成的HTML页面

添加文章时生成HTML静态的页面,但如果要删除文章,添加文章时生成的HTML静态页面也应该同时删除掉,否则就成了冗余文件,所以我们应该在删 除没用的文章时,同时删除掉已生成的HTML静态页面,下面来看看PHP文章系统里面如何同时删除掉生成的HTML静态页面,这里只是一个简单的原理系 统,可以作为一个参考,更成熟系统可以参考比较成熟的CMS系统,下面是源码文件. ob_start(); require_once("../inc/conn.php"); $id=$_GET["id

动态添加删除表格行的js实现代码

 本篇文章主要是对动态添加删除表格行的js实现代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助  代码如下: <html> <head> <script language="javascript">   //窗口表格增加一行   function addNewRow(){    var tabObj=document.getElementById("myTab");//获取添加数据的表格    var rowsNum

mysql-MySQL删除表格很慢 求解决办法

问题描述 MySQL删除表格很慢 求解决办法 我要删除MySQL里的一张很简单的表格,没有数据,却要花很长时间删除,求解决办法 解决方案 先用explain查看一下,可能数据库已经死锁了 解决方案二: 你是怎么来删除的?直接在sql工具里运行?还是通过后台代码的框架来?

discuz列表页删除文章归档外的分类信息的显示

天碰到一个怪胎 大家都添加过DISCUZ分类信息 当然也都设置过主题分类 但是discuz有个问题就是会把你的分类信息的字段和帖子归档的分类都显示出来 这样的话就显得有"点多余和冲突" 列表页删除文章归档外的分类信息的显示-微信文章分类归档"> 唉!!! 你觉得后面的 分类信息自动生成的这个是在哪设置不显示吗? 是不是感觉很碍眼? 我不知道是不是还有别的设置. 但是至少我现在没发现 既然是在帖子列表页面 文件在<template/default/forum/for

PHP实现删除非站内外部链接实例代码_php技巧

一般在做网站系统的时候,出于优化等因素的考虑需要再添加文章的时候删除掉不是本站的链接,对于这一要求可以通过让PHP处理下文章内容,来达到文章外部链接的自动删除的效果. 本实例代码主要参考织梦CMS内容管理系统的外链删除方法. 复制代码 代码如下: /** *  删除非站内链接 * * @access    public * @param     string  $body  内容 * @param     array  $allow_urls  允许的超链接 * @return    strin

通过DEDECMS后台的SQL指定条件删除文章

第一点: 织梦DEDECMS的文章是分别存储在三个表里面[addonarticle],[archives],[arctiny]通过addonarticle.aid.archives.id.arctiny.id关联,删除文章时,应该删除三个表里的记录. 第二点: 执行SQL可以从PHPMYADMIN,或者DEDECMS后台系统设置-SQL命令行工具里 第三点: 本次手动删除内容为空或者字数少于200的文章,分了两步分别删除两个表,总结代码如下: 1: 查看要删除文章的代码:  代码如下 复制代码