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 🙂