Import de produits dans Magento 1.8
⏲️ ~7 min de lecture
Magento propose depuis la version 1.5 un import et un export natif des produits au format CSV. En fonction de la taille de votre catalogue, c'est une solution qui peut être intéressante dans certains cas de figure car elle est simple et rapide à mettre en place, à condition de corriger certaines anomalies encore présentes dans Magento 1.8.
Contrairement au script d'import Magmi (Magento Mass Importer) vous n'avez aucune configuration particulière à faire et vous pouvez utiliser votre tableur préféré pour constituer et mettre à jour votre catalogue produit. C'est d'autant plus intéressant si vous avez beaucoup de mises à jour à faire sur vos produits. Il faudra veiller à bien formater votre tableau. Les noms des colonnes et les valeurs de certains champs doivent être corrects, si vous voulez que Magento accepte d'importer votre fichier.
A noter que dans notre exemple, le catalogue produit de Magento contient une centaine de références, à la fois des produits simples et des produits configurables. Cela est censé également marcher avec les produits groupés, packagés et téléchargeables.
Avant d'importer votre fichier contenant vos produits, vous devrez commencer par configurer votre catalogue Magento. Il faudra donc :
- Créer les jeux d'attributs
- Créer les attributs et les associer aux jeux d'attributs
- Créer votre arborescence de catégories
Pour les développeurs ces opérations pourront être facilitées grâce à notre classe utilitaire permettant d'effectuer des opérations courantes dans Magento.
Les champs obligatoires #
Pour que votre produit soit importé dans le catalogue de Magento, il vous faudra renseigner à minima les champs suivants dans le fichier CSV :
- sku - l'identifiant alphanumérique unique utilisé dans votre inventaire produit. Sa taille ne peut dépasser 64 caractères et ne peut pas contenir de caractères spéciaux et de lettres en majuscules. Le SKU (Stock Keeping Unit) ne pourra donc contenir que des chiffres et des lettres minuscules.
- name - Nom complet du produit qui sera affiché au client. Pas de recommandation spécifique si ce n'est que ce champ ne peut être vide.
- description - contient des informations supplémentaires qui vont permettre au client d'en savoir davatange sur le produit. Pas de recommandation spécifique si ce n'est que ce champ ne peut être vide.
- short_description - description plus concise du produit que les clients verront immédiatement sur la page de description du produit. Pas de recommandation spécifique si ce n'est que ce champ ne peut être vide.
- _type - le type de produit. à choisir parmi les valeurs suivantes : simple, configurable, virtual, downloadable, grouped ou bundle. En lettres minuscules.
- _attribute_set - Le jeu d'attribut auquel le produit est rattaché. Si vous n'avez pas crée de nouveau jeu d'attribut, indiquez - Default (respectez la casse des caractères). Sinon entrez le même nom que celui du jeu d'attribut. Vous le retrouvez dans Admin > Catalogue > Attributs > Gérer les jeux d'attributs
- tax_class_id - Indiquez ici le nom de la classe de taxe produit si vous vendez des produits taxés. Sinon indiquez “0”
- weight - Il est obligatoire de renseigner le poids car c'est utilisé pour calculer les frais de livraison. Utilisez 0 si nous ne voulez pas renseigner ce champ.
- price - Le prix de vente du produit tel qu'il sera affiché au client. Pas de recommandation spécifique si ce n'est que ce champ ne peut être vide.
Mais ce n'est pas tout, pour que vos produits soient visibles pour vos clients, il faudra également renseigner les champs suivants :
- visibility - défini si ce produit est visible dans le catalogue, la recherche, ni l'un ni l'autre ou les deux. Pour que vos clients puissent voir vos produits, utilisez 3 pour la recherche ou 4 pour une visibilité catalogue et recherche. Si besoin vous pouvez mettre 1 pour que le produit ne pas pas visible individuellement - cela peut être utilisé pour les produits configurables, groupés ou packagés qui ne peulnt être vendu séparément. La valeur 2 c'est pour la vue Catalogue seulement, vos produits ne seront donc pas visible dans la recherche Magento.
- _root_category - indique la catégorie racine de votre boutique. Si vous n'avez fait aucune modification à ce niveau, indiquez Default Category.
- _category - indiquez dans ce champ la catégorie ou le chemin de la category en séparant les niveaux par un slash ainsi Appareils Photos/Reflex. Attention là encore à la casse des caractères si vous ne voulez pas vous retrouver avec des doublons dans les catégories (Appareils Photos et Appareils photos). L'import ne crée pas de nouvelles catégories, vous douves les créer dans Magento au préalable. Pour ajouter un produit à plusieurs catégories, vous devez ajouter une ligne en dessous du produit simple avec le nom de la catégorie dans la colonne _category. A noter que pour les versions de Magento inférieures à la 1.4 vous devrez utiliser le champs category_ids
- _product_websites - sur quel site web le produit sera affiché. Utiliser base comme valeur par défaut.
- status - permet de spécifier si un produit est activé ou non. Un produit désactivé n'apparaîtra pas dans le catalogue. Mettez 1 pour activé, 2 pour désactivé.
- qty - 0 ou une valeur supérieure si vous avez activé la gestion de stock dans l'administration de Magento.
- is_in_stock - la valeur 1 indique que le produit est en stocke et 0 signifie en rupture de stock.
Importer les images des produits #
Pour se faire :
- Placer les images à importer dans le répertoire media/import
- Pour chaque image à importer, il faut prefixer le nom de fichier par un /
- Il faut également compléter pour chaque image au moins 3 colonnes (obligatoires):
- _media_attribute_id : L'id contenu dans l'url lorsque vous visualiser l'attribut media_gallery.
- _media_image : L'image à associer au produit.
- _media_lable (non ce n'est pas une typo de notre part) : Le label de l'image.
Il ne suffit pas de renseigner uniquement les champs image, small_image, thumbnail et
image_label, small_image_label, thumbnail_label, car ils s'importeront bien, certes, mais seront automatiquement supprimés lors de la mise à jour du produit, car les images ne sont pas liées à l'attribut media_gallery du produit, l'onglet "image" du produit serait vide.
Afin d'associer ces images, vous devez d'abord trouver dans un premier temps l'id de l'attribut media_gallery
pour se faire la requête SQL suivante vous permettra de le trouver :
SELECT
eav_attribute.
attribute_idFROM
eav_attributeWHERE
eav_attribute.
attribute_codeLIKE 'media_gallery'
Pour vous faciliter la tâche, nous vous avons préparé un modèle de fichier pour importer vos produits dans Magento. Ce fichier contient l'import d'un produit simple et d'un produit configurable avec des options payantes.
Correctif pour l'import de Magento #
Une anomalie relative à l'import remontée sur le bugtracker de Magento, empêche l'import des médias de se dérouler correctement . Cela demande surcharger le modèle du module Mage/ImportExport/Model/Import/Entity/Product.php.
Si vous rencontrez cette erreur après l'import d'un jeu d'attribut spécifié dans le fichier CSV :
Notice: Undefined index: _attribute_set l.1393
Pour la corriger, il faut modifier le fichier Mage/ImportExport/Model/Import/Entity/Product.php :
if (!is_null($rowData[self::COL_ATTR_SET]))
par
if (isset($rowData[self::COL_ATTR_SET]) && !is_null($rowData[self::COL_ATTR_SET]))
Et si vous importez des produits avec des images associées et que vous obtenez les erreurs suivantes :
Notice: Undefined index: _media_attribute_id l.1380 Notice: Undefined index: _media_lable l.1381 Notice: Undefined index: _media_position l.1382 Notice: Undefined index: _media_image l.1383 Notice: Undefined index: _media_is_disabled l.1384
Remplacer toujours dans le fichier Mage/ImportExport/Model/Import/Entity/Product.php :
$mediaGallery[$rowSku][] = array( 'attribute_name' => $rowData['attribute_name'] ... )
par
$mediaGallery[$rowSku][] = array( 'attribute_name' => empty($rowData['attribute_name']) ? '' : $rowData['attribute_name'] ... )
Dernier point, lors de l'import de produit configurable avec des options avec tarifs, il faut impérativement dans le Fichier CSV listant les produits lister les prix par option. Vous devez donc décliner chaque tarification d'option par produit.
Vous pouvez maintenant utiliser la fonctionnalité native d'import de Magento dans Système > Importer/Exporter > Importer. Magento va d'abord vérifier les données, et si il ne trouve pas d'erreur procédera à l'import.
Ensuite pour faire des mises à jour de produits via l'import, il suffit de préciser le SKU du produit et les champs à mettre à jour.
Cet article vous a plu ? Sachez que nous recrutons !