N'hésitez pas à me le signaler si nécessaire via le formulaire de contact.
Magento propose nativement des fonctionnalités d’imports / exports avancées qui ne sont pas forcément connues de tous les développeurs, ce sont les « Profils avancés » , ceux-ci sont disponible directement depuis l’administration dans le menu « Système — Importer/Exporter — Flux de données – Profils avancés »
Par défaut, aucun profil n’existe, mais ces profils vous permettent d’importer/exporter rapidement et facilement des objets magento.
J’avais déjà fait plusieurs articles sur le sujet :
Magento : Importer / Exporter les commentaires et les notes des produits via les profils avancés
Magento : Importer / Exporter les produits complémentaires ( upsell , crossell , related ) via les profils avancés
Afin de boucler la boucle, j’ai donc réalisé un module de gestion de ces profils avancés.
Celui-ci vous permets d’importer/exporter les éléments magento suivants directement depuis l’administration.
- Blocks cms
- Pages cms
- Commentaires et notes produits
- Produits complémentaires
- Emails transactionnels ( en base de données )
Le module est disponible sur github : https://github.com/nenes25/magento_dataflow
Pour ceux qui souhaitent étendre les possibilités du module, nous allons voir rapidement comment celui-ci fonctionne.
Pour cela nous partons d’un exemple fictif d’import / export de données d’un objet ( EAV ou non) gérant des jeux concours et dont le chargement d’un modèle s’effectuerait par le code suivant :
Mage::getModel('hhennesgame/game'); |
Pour commencer il faudrait rajouter un fichier « Game.php » dans l’arborescence « app/code/community/Hhennes/DataFlow/Model/Convert/Parser/ avec le contenu suivant :
<?php class Hhennes_DataFlow_Model_Convert_Parser_Game extends Hhennes_DataFlow_Model_Convert_Parser_Abstract { /** Mettre ici le code du modèle à appeller */ protected $_model ='hhennesgame/game'; } |
Pour gérer l’export il faut ensuite créer un profil avancé avec le code xml suivant
<!-- Extraction des données pour l'import - Spécifier ici notre modèle personnalisé --> <action type="hhennes_dataflow/convert_parser_game" method="unparse"> </action> <!-- Mapping des données --> <action type="dataflow/convert_mapper_column" method="map"> </action> <!-- Export du fichier au format csv --> <action type="dataflow/convert_parser_csv" method="unparse"> <var name="delimiter"><![CDATA[;]]></var> <var name="enclose"><![CDATA["]]></var> <var name="fieldnames">true</var> </action> <!-- Sauvegarde du fichier --> <action type="dataflow/convert_adapter_io" method="save"> <var name="type">file</var> <var name="path">var/export</var><!-- Dossier export --> <var name="filename"><![CDATA[nonfichier_import.csv]]></var><!-- Nom du fichier --> </action> |
Puis pour l’import
<action type="dataflow/convert_adapter_io" method="load"> <var name="type">file</var> <var name="path">var/import</var> <!-- Dossier ou est le fichier --> <var name="filename"><![CDATA[filename.csv]]></var> <!-- Fichier à traiter --> <var name="format"><![CDATA[csv]]></var> </action> <action type="dataflow/convert_parser_csv" method="parse"> <var name="delimiter"><![CDATA[;]]></var> <var name="enclose"><![CDATA["]]></var> <var name="fieldnames">true</var> <var name="number_of_records">1</var> <var name="decimal_separator"><![CDATA[.]]></var> <var name="adapter">Hhennes_dataflow/convert_parser_game</var> <!-- Modèle personnalisé --> <var name="method">parse</var> <!-- Méthode du modèle a appeller --> </action> |
Vous n’avez plus qu’a lancer vos imports depuis l’administration, et puis c’est tout tout le reste de l’import est géré par Magento 🙂