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.