专注ECSHOP第九年
始自2007,服务二千多商户,不断为您增光溢彩

ECSHOP文章详情或商品删除后删除对应的描述图片

ECSHOP删除文章或从回收站删除商品,文章内容和商品描述中的图片(位于/images/upload/Image目录)无法删除,时间长了会占用相当大的空间,尤其是使用虚拟主机的用户,对空间造成很大的开销和浪费。

实际上,我们可以写一个删除图片的函数,然后在删除文章和商品的页面,如/admin/goods.php、/admin/includes/lib_goods.php、/admin/article.php相关位置调用此函数即可的时候,调用该函数即可。函数如下:

找到admin/goods.php

搜索  $sql = “SELECT goods_id, goods_name, is_delete, is_real, goods_thumb

后增加:(约1760行)

,goods_desc,

继续搜索  /* 删除商品的货品记录 */

前增加:@deletePic($goods[‘goods_desc’]);

最后在页面最底部?>前增加函数:

/** 
 * 删除描述中的图片 
 * @access  public 
 * @params  string  $desc 
 */ 
function deletePic($desc) 
{ 
    preg_match_all("/<img([^>]*)\s*src=('|\")([^'\"]+)('|\")/", $desc, $matches); 
    $arr = array_unique($matches[0]); //去除数组中重复的图片路径 
    foreach($arr as $value) 
    {  
        $str = strrchr($value, '/'); //结果示例:/1.png" 
        $fileName = substr($str, 0, strlen($str)-1); //结果示例:/1.png 
        @unlink('../images/upload/Image' . $fileName);  //删除图片 
    } 
}

方法二:

找到admin/goods.php

elseif ($_REQUEST[‘act’] == ‘drop_goods’)

在这里面添加

$sql = "select goods_desc from ".$ecs->table('goods')." where goods_id = ".$goods_id;
$des = $db->getOne($sql);
$arr = explode("<img",$des);


for($i=0;$i<count($arr);$i++){
if(strpos($arr[$i],'src=')>-1){
$tmp = explode("\"",$arr[$i]);
for($k=0;$k<count($tmp);$k++){
if(strpos($tmp[$k],'.jpg')>-1||strpos($tmp[$k],'.jpeg')>-1||strpos($tmp[$k],'.png')>-1||strpos($tmp[$k],'.gif')>-1||strpos($tmp[$k],'.bmp')>-1){
@unlink('../' .$tmp[$k]);

$imgs[] = $tmp[$k];
}
}
}
}

 

 

赞(0) 打赏
未经允许不得转载:阿牛ECSHOP » ECSHOP文章详情或商品删除后删除对应的描述图片
分享到: 更多 (0)
1

评论 抢沙发

阿牛ECSHOP 更专业 更方便

关于我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏