Magentoすべての製品画像を削除


8

クライアントによっていくつかのイメージインポートが行われたmagentoのインストールがありますが、最初のインポートが間違ったimg名を持っているので、冷蔵庫の冷凍庫を備えたトースターが間違った製品で間違ったイメージを受け取りました。CSV経由でさらにインポートした後、画像を変更するのではなく、追加したようです。

サイト上のすべての製品画像を削除してから、正しいインポートを再実行して、すべての画像が正しいようにする必要があります。

すべての画像を削除してから、Dataflowプロファイルを介して新たにインポートし、正しいフィールドを再マッピングする簡単な方法はありますか?

どんな助けでも素晴らしいでしょう!

回答:


16

画像を削除する最速の方法は、次の手順に従います:からすべてのレコードを削除します

  1. catalog_product_entity_media_gallery
  2. catalog_product_entity_media_gallery_value'

magentoはすべての製品画像データをそれらのテーブルに保存するため、テーブル。

次に、セットイメージを黒にするために、管理者のインデックス管理からインデックスを作成します。

次に、画像from dir を削除しmedia/catalog/product てから、このフォルダーからmagento dirに移動し、すべてのファイルを削除します。

別のプロセス:

アンディシンプソン、is delete all productあなたのシステムからのスクリプトが必要delete from DB and file systemです。

ステップ1: includeを作成a phproot direct of magento systemますMage.php at first code

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

ステップ2:セットcurrent store isadminとセット開発者モード

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

ステップ3:取得Product Collectionし、一つ一つによって取得一つの製品のためのループを作成します

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

ステップ4:以下のコードを使用して、製品の画像を1つずつ取得し、画像1を削除します。

$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に変更しました。ご協力いただきありがとうございます。
Andy Simpson、

1
phpシェルの実行を使用してください、それはより良いプロセスです...それ以外の場合は、ブラウザを介してページからファイルにアクセスします
Amit Bera

私にとって...最初の製品の画像のみを削除しています
Alam Zaib

@AmitBera、このテーブルも切り捨てる必要がありますか?TRUNCATE TABLE catalog_product_entity_media_gallery_value_to_entity;
jafar pinjar

2

アミットの答えの完全な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スクリプトを使用して、すべての製品をループし、メディアを削除できます。詳細については、https://stackoverflow.com/questions/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

「Amit Bera」に感謝します

以下の手順に従って、すべての商品画像を削除しました。

画像を削除する最速の方法は、次の手順に従います:からすべてのレコードを削除します

magentoはすべての製品画像データをそれらのテーブルに保存するため、catalog_product_entity_media_gallery catalog_product_entity_media_gallery_value 'テーブル。

次に、セットイメージを黒にするために、管理者のインデックス管理からインデックスを作成します。

次に、dirからイメージを削除し、media / catalog / productのmagento dirに移動して、このフォルダーからすべてのファイルを削除します。


なぜ-1なのか説明してください。
Rajesh Jai 2017

答えではありません
seanbreeden
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.