Magento Supprimer toutes les images de produits

8

J'ai une installation magento qui a eu plusieurs importations d'images effectuées par le client et ses images sont fausses dans les mauvais produits, des grille-pain avec des réfrigérateurs-congélateurs car l'importation initiale avait les mauvais noms img. Après une nouvelle importation via CSV, il semble avoir ajouté les images plutôt que de les modifier.

J'ai besoin de supprimer toutes les images de produits sur le site, puis de refaire l' import CORRECT pour que toutes les images soient correctes.

Existe-t-il un moyen rapide de supprimer toutes les images, puis effectuez une nouvelle importation via les profils de flux de données et remappez les champs corrects?

Toute aide serait géniale!

Andy Simpson
la source

Réponses:

16

Méthode la plus rapide pour supprimer l'image, puis suivez les étapes ci-dessous: supprimez tous les enregistrements de

  1. catalog_product_entity_media_gallery
  2. catalog_product_entity_media_gallery_value'

car Magento enregistre toutes les données d'image du produit dans ces tables.

Puis indexez à partir de la gestion d'index de l'administrateur pour définir l'image en noir.

Ensuite, supprimez l'image from dir puis passez à votre media/catalog/product répertoire magento dans et à partir de ce dossier, supprimez tous les fichiers.

Un autre processus:

Andy Simpson, vous avez besoin d'un script is delete all productqui partira de votre système delete from DB and file system.

Étape 1: Créez a php à root direct of magento systemlaquelle inclure Mage.php at first code.

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

Étape 2: définir l' current store isadministrateur et définir le mode développeur

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

Étape 3: Obtenez Product Collectionet créez une boucle pour obtenir un produit un par un

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

Étape 4: récupérez l'image du produit par un et supprimez l'image une en utilisant le code ci-dessous:

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

CODE COMPLET:

<?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
la source
Salut, merci pour votre réponse, j'ai créé le fichier php et l'ai appelé delete-image.php, comment exécuter le script, dois-je visiter la page via le navigateur? J'ai également changé catalogue / produit_collection en catalogue / produit car c'est là que se trouvent les images, est-ce correct? Merci de votre aide.
Andy Simpson, du
1
utiliser l'exécution du shell php, c'est un meilleur processus .... sinon, frappez votre fichier depuis la page via le navigateur
Amit Bera
pour moi ... il supprime uniquement les images du premier produit
Alam Zaib
@AmitBera, faut-il également tronquer ce tableau? TRUNCATE TABLE catalog_product_entity_media_gallery_value_to_entity;
jafar pinjar
2

La déclaration mysql complète pour la réponse d'Amit est

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
la source
0

Je ne pense pas qu'il existe une solution rapide à ce problème, sauf si vous pouvez réimporter tous vos produits à partir d'une exportation de sauvegarde avec les données d'image correctes.

Vous pouvez utiliser un script PHP pour parcourir tous vos produits et supprimer les médias. Jetez un œil à /programming/5709496/magento-programmatically-remove-product-images pour plus d'informations.

Vous pouvez supprimer / média / catalogue / produit / et restaurer en toute sécurité si vous avez une sauvegarde de travail avec les fichiers d'image corrects.

paj
la source
0

Je l'habitude de Kevando sur magento 2.2.7, mais lorsque l'importation d'images à nouveau ne sera pas exactement. Voici donc mes réponses, ce sera testé.

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
la source
-1

Merci "Amit Bera", cela m'a sauvé la journée et fonctionne bien

J'ai simplement suivi la procédure ci-dessous pour supprimer toutes les images de produits.

Méthode la plus rapide pour supprimer l'image, puis suivez les étapes ci-dessous: supprimez tous les enregistrements de

catalog_product_entity_media_gallery table catalog_product_entity_media_gallery_value 'car magento enregistre toutes les données d'image du produit dans cette table.

Puis indexez à partir de la gestion d'index de l'administrateur pour définir l'image en noir.

Ensuite, supprimez l'image du répertoire, puis passez à votre répertoire magento dans le dossier media / catalog / product et supprimez tous les fichiers de ce dossier.

Rajesh Jai
la source
Pouvez-vous expliquer pourquoi -1 pour cela.
Rajesh Jai
Ce n'est pas une réponse
seanbreeden