Solution au problème d’import d’une image existante dans Magento

Encore un nouveau bug sur l’import Magento qui m’a coûté pas mal de temps.

Afin de mettre à jour son catalogue, il est fréquent de vouloir l’exporter puis de vouloir le réimporter.

Dans votre fichier .CSV, vous avez alors un fichier image de la forme suivante :

/a/g/monimage.jpg

En fait, quand lorsque vous importez les images pour la première fois en utilisant le dossier “media/import/”, Magento s’occupe de lui même de replacer vos images dans des dossiers par ordre alphabétique. Vos images sont dispatchées dans le dossier “media/catalog/product” puis “/a/g/monimage.jpg”.

Problème : Vous effectuez votre mise à jour et vos produits disparaissent !

Solution : C’est un bug Magento, corrigez-le en modifiant le fichier app/code/core/Mage/ImportExport/Model/Import/Entity/Product.php à la ligne 1226.

Avant:

if (!array_key_exists($rowData[$imageCol], $uploadedGalleryFiles)) {

$uploadedGalleryFiles[$rowData[$imageCol]] = $this->_uploadMediaFiles($rowData[$imageCol]);
}
$rowData[$imageCol] = $uploadedGalleryFiles[$rowData[$imageCol]];

Après:

if (!array_key_exists($rowData[$imageCol], $uploadedGalleryFiles)) {
$uploadedGalleryFiles[$rowData[$imageCol]] = $this->_uploadMediaFiles($rowData[$imageCol]);
}
// if images are new, the raw data should be the new image file
// if images are already loaded, should not be called
if (substr_count($rowData[$imageCol], ‘/’) == 1) {
$rowData[$imageCol] = $uploadedGalleryFiles[$rowData[$imageCol]];
}

Désormais, les nouvelles images seront importées et les vieilles images garderont leur valeur.

Source

One Comment

  1. Garde d'animaux

    Bien joué d’avoir trouvé ce problème et de proposer la solution sur ton blog! J’utilise Magento sur l’un de mes e-commerce, je n’avais encore jamais effectué ces manipulations, je vais voir ça de plus près!
    Merci à toi pour ces explications.

Laisser un commentaire