Magento Alle Produktbilder löschen

8

Ich habe eine Magento-Installation, bei der mehrere Bilder vom Client importiert wurden und die falsche Bilder in den falschen Produkten hat, Toaster mit Kühl- und Gefrierschränken, da der erste Import die falschen Bildnamen hatte. Nach einem weiteren Import über CSV scheinen die Bilder angehängt worden zu sein, anstatt sie zu ändern.

Ich muss alle Produktbilder auf der Website löschen und dann den RICHTIGEN Import erneut durchführen, damit alle Bilder korrekt sind.

Gibt es eine schnelle Möglichkeit, alle Bilder zu löschen und dann einen neuen Import über Datenflussprofile durchzuführen und die richtigen Felder neu zuzuordnen?

Jede Hilfe wäre großartig!

Andy Simpson
quelle

Antworten:

16

Der schnellste Weg, um ein Bild zu entfernen, und führen Sie dann die folgenden Schritte aus: Löschen Sie alle Datensätze aus

  1. catalog_product_entity_media_gallery
  2. catalog_product_entity_media_gallery_value'

Tabelle, da Magento alle Produktbilddaten in dieser Tabelle speichert.

Dann Index aus der Indexverwaltung vom Administrator für das eingestellte Bild schwarz.

Entfernen Sie from dir dann das Bild und gehen Sie zu Ihrem Magento- media/catalog/product Verzeichnis. Löschen Sie alle Dateien aus diesem Ordner.

Ein anderer Prozess:

Andy Simpson, du brauchst ein Skript welches is delete all productvon deinem System was wird delete from DB and file system.

Schritt 1: Erstellen Sie a php mit root direct of magento systemwelchem ​​Include Mage.php at first code.

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

Schritt 2: Stellen Sie den current store isAdministrator und den Entwicklermodus ein

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

Schritt 3: Holen Sie sich Product Collectioneine Schleife und erstellen Sie sie, um ein Produkt nach dem anderen zu erhalten

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

Schritt 4: Rufen Sie das Produktbild nacheinander ab und entfernen Sie das erste Bild mit dem folgenden Code:

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

VOLLSTÄNDIGER CODE:

<?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']);
    }


}
Amit Bera
quelle
Hallo, danke für deine Antwort, ich habe die PHP-Datei erstellt und sie delete-image.php genannt. Wie führe ich das Skript aus? Muss ich die Seite über einen Browser besuchen? Ich habe auch catalog / product_collection in catalog / product geändert, da sich hier die Bilder befinden. Ist das richtig? danke für Ihre Hilfe.
Andy Simpson
1
Verwenden Sie die PHP-Shell-Ausführung, es ist besser zu verarbeiten .... sonst schlagen Sie Ihre Datei von der Seite über den Browser
Amit Bera
für mich ... es löscht nur die Bilder des ersten Produkts
Alam Zaib
@AmitBera, muss diese Tabelle ebenfalls abgeschnitten werden? TRUNCATE TABLE catalog_product_entity_media_gallery_value_to_entity;
Jafar Pinjar
2

Die vollständige MySQL-Erklärung für Amits Antwort lautet

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;
Kevando
quelle
0

Ich glaube nicht, dass es eine schnelle Lösung dafür gibt, es sei denn, Sie können alle Ihre Produkte aus einem Backup-Export mit den richtigen Image-Daten erneut importieren.

Sie können ein PHP-Skript verwenden, um alle Ihre Produkte zu durchlaufen und die Medien zu entfernen. Hier finden Sie aktuelle /programming/5709496/magento-programmatically-remove-product-images für weitere Informationen.

Sie können / media / catalog / product / sicher löschen und wiederherstellen, wenn Sie über ein funktionierendes Backup mit den richtigen Image-Dateien verfügen.

paj
quelle
0

Ich habe Kevando auf Magento 2.2.7 verwendet, aber beim erneuten Importieren von Bildern nicht genau. Das sind also meine Antworten, die getestet werden müssen.

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;
Xanka
quelle
-1

Danke "Amit Bera", es hat meinen Tag gerettet und funktioniert gut

Ich habe nur das folgende Verfahren befolgt, um alle Produktbilder zu löschen.

Der schnellste Weg, um ein Bild zu entfernen, und führen Sie dann die folgenden Schritte aus: Löschen Sie alle Datensätze aus

catalog_product_entity_media_gallery catalog_product_entity_media_gallery_value 'Tabelle, da Magento alle Produktbilddaten in dieser Tabelle speichert.

Dann Index aus der Indexverwaltung vom Administrator für das eingestellte Bild schwarz.

Entfernen Sie dann das Bild aus dir und gehen Sie zu Ihrem Magento-Verzeichnis unter media / catalog / product und löschen Sie aus diesem Ordner alle Dateien.

Rajesh Jai
quelle
Können Sie bitte erklären, warum -1 dafür.
Rajesh Jai
Es ist keine Antwort
Seanbreeden