ECSHOP删除商品的同时自动删除商品描述里的图片插件

人气:4060 来源:模板屋

1 在上传商品图片和详情页的图片后,觉得这个商品不是很完美,或者是之前测试用的图片和描述图片想删除

2 删除了商品的列表中的商品,回收站还要在删除,这没有解决图片占用空间的问题,其实在你的服务器和空间同样还是存在你上传过的图片

3 使用本款插件后,如果点击删除,那么删除商品的同时自动删除商品描述里的图片


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];
}
}
}
}


4
更多ECSHOP插件