Magento删除所有产品图片


8

我有一个magento安装,该安装已由客户端完成了几次图像导入,并且在错误的产品中出现了错误的图像,带有冰箱冰柜的烤面包机,因为初始导入的img名称错误。通过CSV进一步导入后,似乎已添加了图像,而不是对其进行更改。

我需要删除站点上的所有产品图像,然后重新进行正确导入,以便所有图像都是正确的。

有没有一种快速的方法来删除所有图像,然后通过数据流配置文件重新导入并重新映射正确的字段?

任何帮助都是极好的!

Answers:


16

删除图像的最快方法,然后按照以下步骤操作:从中删除所有记录

  1. catalog_product_entity_media_gallery
  2. catalog_product_entity_media_gallery_value'

表,因为magento会将所有产品图像数据保存在那些表中。

然后从管理员的索引管理中为设置的图像黑色编制索引。

然后删除图像,from dir 然后转到media/catalog/product 此文件夹中的magento目录并从中删除所有文件。

另一个过程:

安迪·辛普森(Andy Simpson),您需要一个is delete all product从系统中执行的脚本delete from DB and file system

第一步:创建a phproot direct of magento system包括Mage.php at first code

require_once "YOURMAGENTODIR/app/Mage.php";
umask(0);

第二步:设置current store is管理员并设置开发人员模式

Mage::app('admin');
Mage::setIsDeveloperMode(true);

第三步:获取Product Collection并创建一个循环,以一个一个地获取一个产品

$productCollection=Mage::getResourceModel('catalog/product_collection');

第4步:使用以下代码将商品图片一幅化并删除一幅图片:

$remove=Mage::getModel('catalog/product_attribute_media_api')->remove($product->getId(),$eachImge['file']);

完整代码:

<?php
require_once "YOURMAGENTODIR/app/Mage.php";
umask(0);
Mage::app('admin');
Mage::setIsDeveloperMode(true);

$productCollection=Mage::getResourceModel('catalog/product_collection');
foreach($productCollection as $product){
echo $product->getId();
echo "<br/>";
         $MediaDir=Mage::getConfig()->getOptions()->getMediaDir();
        echo $MediaCatalogDir=$MediaDir .DS . 'catalog' . DS . 'product';
echo "<br/>";

$MediaGallery=Mage::getModel('catalog/product_attribute_media_api')->items($product->getId());
echo "<pre>";
print_r($MediaGallery);
echo "</pre>";

    foreach($MediaGallery as $eachImge){
        $MediaDir=Mage::getConfig()->getOptions()->getMediaDir();
        $MediaCatalogDir=$MediaDir .DS . 'catalog' . DS . 'product';
        $DirImagePath=str_replace("/",DS,$eachImge['file']);
        $DirImagePath=$DirImagePath;
        // remove file from Dir

        $io     = new Varien_Io_File();
         $io->rm($MediaCatalogDir.$DirImagePath);

        $remove=Mage::getModel('catalog/product_attribute_media_api')->remove($product->getId(),$eachImge['file']);
    }


}

嗨,感谢您的答复,我已经创建了php文件,并将其命名为delete-image.php,如何执行脚本,我是否需要通过浏览器访问页面?我也将catalog / product_collection更改为catalog / product,因为这是图像所在的位置,对吗?谢谢你的帮助。
安迪·辛普森

1
使用php shell执行,这是一个更好的过程。...否则,通过浏览器从页面上击中您的文件
Amit Bera

对我来说...仅删除第一个产品的图像
Alam Zaib

@AmitBera,是否也需要截断该表?TRUNCATE TABLE catalog_product_entity_media_gallery_value_to_entity;
贾法尔·品哈尔(Jafar Pinjar)

2

Amit答案的完整mysql语句是

SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE catalog_product_entity_media_gallery;
TRUNCATE TABLE catalog_product_entity_media_gallery_value;
SET FOREIGN_KEY_CHECKS = 1;

0

我认为没有快速解决方案,除非您可以使用正确的图像数据从备份导出中重新导入所有产品。

您可以使用PHP脚本遍历所有产品并删除媒体。请查看/programming/5709496/magento-programmatically-remove-product-images了解更多信息。

如果使用正确的映像文件进行了有效的备份,则可以安全地删除/ media / catalog / product /并进行还原。


0

我曾经在magento 2.2.7上使用过Kevando,但是再次导入图像时并不会完全一样。这是我的答案,已经过测试。

SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE catalog_product_entity_media_gallery;
TRUNCATE TABLE catalog_product_entity_media_gallery_value;
TRUNCATE TABLE catalog_product_entity_media_gallery_value_to_entity;
SET FOREIGN_KEY_CHECKS = 1;

-1

谢谢“阿米特·贝拉”,这节省了我的时间,而且工作正常

我只是按照以下过程删除了所有产品图像。

删除图像的最快方法,然后按照以下步骤操作:从中删除所有记录

catalog_product_entity_media_gallery catalog_product_entity_media_gallery_value'表,因为magento将所有产品图像数据保存在这些表中。

然后从管理员的索引管理中为设置的图像黑色编制索引。

然后从目录中删除图像,然后转到位于media / catalog / product的您的magento目录,然后从该文件夹中删除所有文件。


您能否解释为什么为-1。
Rajesh Jai

这不是答案
seanbreeden
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.