Die Dataflow-Extension in Magento ist ein nützliches Tool, um Produkte und Kunden zu exportieren und zu importieren. Sie existiert seit Magento 1.0.
Obwohl sie als deprecated erwähnt wurde, gibt es keine andere Standard-Extension in der Magento Community Edition, die so flexible Exporte wie Dataflow generieren kann. Das Schöne an Dataflow: es kann über XML-Profile konfiguriert werden, die man problemlos selbst anpassen kann.
Seit Magento 1.6 existiert auch die Mage_ImportExport Extension, welche in Hinsicht auf Performance viel besser ist. Allerdings scheint der hauptsächliche Verwendungszweck die Migration aus einer Magento-Instanz in eine andere zu sein, da es keine Feld-Konfigurationen, Filter usw. gibt.
Es existiert auch ein Post im Magento-Forum, der die Unterschiede zwischen den beiden Export-Extensions genauer darstellt.
Aus den oben genannten Gründen haben wir uns entschieden, ein angepasstes Dataflow Export-Profil für die Produktfeed-Generierung in userer Recolize Recommendation Engine Extension für Magento zu nutzen.
Dabei hatten wir aber zwei Probleme mit dem Standardverhalten des Dataflow-Exports zu lösen:
- Die Produkt-URL kann als komplette URL exportiert werden. Dafür muss im XML der Knoten
<var name="url_field"><![CDATA[1]]></var>
im Mapper eingefügt werden. Allerdings gibt es eine solche Option nicht für die URLs der Produktbilder. Diese werden stattdessen z.B. als /l/o/logitech-cordless-optical-trackman.jpg exportiert - Das zweite Problem: Produkt-Kategorien werden als IDs und nicht mit ihren Kategorienamen exportiert
Beide Probleme können mit einem angepassten Dataflow-Mapper gelöst werden, welcher von Mage_Dataflow_Model_Convert_Mapper_Abstract
erbt. In diesem kann beispielsweise eine Methode map() deklariert werden, die über alle Batch-Exporte und deren Attribute iteriert, und die entsprechenden Anpassungen vornimmt.
Danach kann ein Standard Dataflow-Profile unter System > Import/Export > Dataflow – Profiles erstellt werden, aus dem der XML-Code aus den Profile Actions kopiert und in ein neues Advanced Dataflow Profile eingefügt wird. Dieses legt man unter System > Import/Export > Dataflow – Advanced Profiles an. Dann muss Nur noch der Default-Mapper <action type="dataflow/convert_mapper_column" method="map"></action>
mit dem neuen angepassten Mapper-Model im XML ersetzt werden. Fertig.
Um ein komplettes Beispiel zu sehen, schauen Sie sich unsere Magento Extension an.