Migration von xt:Commerce
Aus ShopleiterWiki
Inhaltsverzeichnis |
1.4.2 Migration von Xt:Commerce
Inzwischen hat sich xt:Commerce v3.0.4 SP2.1 so weit von osCommerce wegentwickelt, dass ein direkter Datenimport mit obigem Modul nicht möglich ist. Sicherlich gibt es schon die ein oder andere Lösung, bzw. wird an weiteren Schnittstellen gearbeitet. Zum jetzigen Zeitpunkt gibt es leider keine frei verfügbare Shop-Anbindung, mit der Sie bequem per Knopfdruck umziehen. Im weiteren Verlauf dieses Abschnittes bekommen Sie jedoch ein paar Möglichkeiten gezeigt, wie Sie doch wenigstens einen Großteil an Daten ins neue System überspielen können. Hauptsächlich geht es dabei um Kategorien, Produkte und Kundendaten. Nutzen Sie dieses Manko gleichzeitig als Chance, frisch aufgeräumt und optimiert mit einem neuen Shop an den Start zu gehen.
Produkt- und Kategoriedaten exportieren
Ähnlich wie der Magento Shop kann xt:Commerce standardmäßig keine Kategorien importieren bzw. exportieren. Kostenlose Abhilfe bietet das Moduls „Modul Erweiterter Im/Export 2.0“ von estelco. Mit diesem Modul sind Sie in der Lage, nicht nur Produkte, sondern ebenso Kategorien und Produktzuordnungen auszulesen. Eigentlich ist dieses Tool dazu gedacht, Kategorien und Artikel zu bearbeiten und anschließend wieder in den xt:Commerce-Shop hochzuladen.. Aber für unsere Zwecke ist es auch hilfreich, da es sämtliche Kategorien als CSV-Datei exportiert.
Haben Sie die Kategorie-Daten erst einmal in OpenOffice.org Calc oder Microsoft Excel geöffnet, dann ist es ein leichtes, eine entsprechende CSV-Datei für den Datenimport zu basteln. Die exportierte Datei sieht zwar nicht so aus, wie Sie die Daten benötigen, aber mit ein paar Grundkenntnissen hinsichtlichen Tabellenkalkulationen ist das kein Problem.
- Öffnen Sie mit Excel die aus xt:Commerce exportierte CSV-Tabelle!
- Fügen Sie ein neues Tabellenblatt ein und notieren die Spaltenüberschrift!
- Erstellen Sie ein paar Formeln für alle gewünschten Spalteninhalte!
- Verlängern Sie Zeile 2 bis zur erforderlichen Kategorieanzahl!
- Markieren Sie den Inhalt von Spalte H und erstellen damit die CSV-Datei!
Die exportierte Datei mit Excel öffnen und den Inhalt spaltenweise anzeigen lassen. Danach ein neues leeres Tabellenblatt einfügen und einige Formeln ablegen. Das Wesentliche findet in den Spalten B, D und F statt. Sie brauchen dazu lediglich die ersten beiden Zeilen des neuen Tabellenblatts erstellen. In diesen besonderen Spalten nutzen Sie spezielle Verweise auf das andere Tabellenblatt, z. B. ='Xtc-Kategorien'!V2. Das bedeutet: Auf dem Tabellenblatt Xtc-Kategorien steht in Zelle V3 der Wert der Kategorie „Templates“. In Zelle AA2 steht die MetaDescription der Kategorie. So holen Sie sich den Content aus dem ersten Tabellenblatt und sortieren ihn wie erforderlich auf dem zweiten Tabellenblatt. Die kompletten Spalten bündeln Sie dann in Zelle H2, mit =A2&B2&C2&D2&E2&F2&G2. Wenn Sie dann die Zelle A2 bis H2 markieren, lässt sich diese leicht nach unten verlängern. Selbst wenn Sie 1.000 Kategorien haben, ist es ein leichtes, die Tabelle zu erstellen. Zum Schluss benötigen Sie nur den Inhalt in der Spalte H. Diesen Content speichern Sie als Categories.csv ab.
Vorsichtshalber finden Sie auf der CD eine kleine Musterdatei für den problemlosen Kategorie-Import. Falls Sie im alten Shop noch weitere Informationen zu Kategorien gespeichert haben, müssen Sie die Datei mit zusätzlichen Spalten erweitern.
| Magento | Xt:Commerce | Beispieldaten aus Xtc-Shop |
|---|---|---|
| catName | c_name.de | Webdesign |
| catDescription | c_desc.de | Templates für CMS, Shop und Weblog |
| catImage | c_image | webDesign-templates.png |
| catMetaDescription | c_meta_desc.de | Wir bieten Layouts und Templates ... |
| catMetaKeywords | c_meta_key.de | Template, Layout, Design, Webdesign, CSS |
Tabelle 1.8: Kategorie-Datenfelder zwischen Magento und xt:Commerce
Erweitertes Im/Export 2.0 Modul für Xt:Commerce
Erweitertes Profil importiert Kategoriedaten
Für den Datenimport von Kategorien gibt es bislang keine ordentliche Import-Schnittstelle. Aus diesem Grund greifen wir auf einen Quellcode zurück, der freundlicherweise von Santhosh Kumar im Forum hinterlegt wurde.
- Konfigurieren Sie ein erweitertes Profil namens „Import Categories“!
- Kopieren Sie Model und Klasse in den Ordner /app/code/local/!
- Hinterlegen Sie im /modules/-Verzeichnis eine neue XML-Datei!
- Erstellen Sie im Ordner /var/import/ eine CSV-Datei mit Ihren Kategorien!
Für die Konfiguration eines erweiterten Profils (Advanced Profil) benötigen Sie den in Listing 1.25 dargestellten Code. Dem Profil geben Sie einen sinnvollen Namen wie etwa „Import Categories“. Kopieren Sie diesen in das Textarea-Feld „Aktionen in XML“ (Actions XML). Wenn Sie sich den Aktionsinhalt mal überfliegen, sehen Sie schon, was so in etwa passiert. Es wird die Datei Categories.csv geladen, dessen Inhalt mit (") und (,) spaltenweise voneinander getrennt ist.
<action type="dataflow/convert_adapter_io" method="load">
<var name="type">file</var>
<var name="path">var/import</var>
<var name="filename"><![CDATA[Categories.csv]]></var>
<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="store"><![CDATA[0]]></var>
<var name="number_of_records">1</var>
<var name="decimal_separator"><![CDATA[.]]></var>
<var name="adapter">catalog/convert_adapter_category</var>
<var name="method">parse</var>
</action>
Listing 1.25: Aktions-XML für den Kategorie-Import
Erstellen Sie im Verzeichnis /app/etc/modules/eine Datei mit dem Namen ImpCat_All.xml. Kopieren Sie den Quellcode aus Listing 1.26 in diese neue Datei.
<?xml version="1.0"?>
<config>
<modules>
<ImpCat_Catalog>
<codePool>local</codePool>
<active>true</active>
</ImpCat_Catalog>
</modules>
</config>
Listing 1.26: Inhalt der Datei ImpCat_All.xml
Auf der beigefügten CD (ImpCat.zip) bzw. im Magento Forum finden Sie den Quellcode des Models für den Datenimport. Den Inhalt der ZIP-Datei entpacken Sie in das Verzeichnis /app/code/local/. Die Datei beinhaltet das Model und die Klasse class ImpCat_Catalog_Model_Convert_Adapter_Category. Durch ein paar kleine Anpassungen im unteren Teil der PHP-Datei ist es nicht schwer, zusätzliche Informationen aus Ihrem Xt:Commerce Shop in den Kategorie-Bereich einzuspielen. Den einzelnen Variablen weisen Sie dazu innerhalb der foreach-Schleife entsprechende Werte zu. Zusätzlich benötigt Ihre CSV-Datei weitere Spalten mit den entsprechenden Namen und Inhalten.
->setDescription($importData['catDescription']) ->setImage($importData['catImage']) ->setMetaKeywords($importData['catMetaKeywords']) ->setMetaDescription($importData['catMetaDescription']) ->setUrlKey($importData['catUrlKey'])
Listing 1.27: Anpassungen zum Import kategoriespezifischer Informationen
Im letzten Schritt benötigen Sie nun noch eine CSV-Datei mit allen gewünschten Shop-Kategorien. Diese speichern Sie im Verzeichnis /var/import/ ab. Achten Sie unbedingt darauf, die Datei im Format „UTF-8 ohne BOM“ abzuspeichern, sonst klappt der Datenimport nicht und es erscheint die Fehlermeldung: „Call to undefined method ImpCat_Catalog_Model_Convert_Adapter_Category::getStoreById() in /stores/app/code/local/ImpCat/Catalog/Model/Convert/Adapter/Category.php on line 42“. Ist alles gespeichert, kann der Datenimport starten, indem Sie auf Starte Profil (Run Profil) klicken. Besitzen Sie noch weitere Informationen zu Kategorien, so lassen sich diese bequem an die CSV-Datei in Listing 1.28 anhängen.
"store","categories" "default","Webhosting" "default","Webhosting/Shop Hosting" "default","Webhosting/Shop Hosting/Shop Hosting FWP-Shop" "default","Webhosting/Shop Hosting/Shop Hosting Magento" "default","Webhosting/Shop Hosting/Shop Hosting xt:Commerce"
Listing 1.28: Muster-Datei eines Kategorie-Imports
Mit der Dataflow Extension 753 lassen sich Kategorien ebenso exportieren.
Customize Parts of Magento Configuration
Dataflow Extension für Kategorie-Export
Produktdaten importieren
Ihre Produktdaten aus Ihrem ehemaligen Shop sind wahrscheinlich einfacher importierbar als Kategorie- oder Kundendaten. Im Normalfall genügt das schon vorhandene Import-/Exportmodul in xt:Commerce, es ist also kein Zusatzmodul erforderlich. Ebenso ist der Import in Magento einfacher, da es bereits ein Standard-Importprofil gibt, mit dem Sie diese Aufgabe erledigen können. Die wichtigsten Felder, mit denen zumindest in etwa ein Datenabgleich mit Ihren vorhandenen Daten möglich ist, finden Sie in Tabelle 1.9. In aller Regel hängt dies aber sehr stark von der Datenpflege ab, die Sie bisher in Ihrem alten Shop betrieben haben. Je stärker Sie von der Norm abweichen, desto schwieriger gestaltet sich der Abgleich.
| Magento | xt:Commerce | Beispieldaten aus xtC-Shop |
|---|---|---|
| name | p_name.de | Installation Xt Commerce 3.0.4 SP2.1 |
| manufacturer | p_manufacturer | wallaby |
| url_key | p_url.de | www.Magentocommerce.com |
| meta_title | p_meta_title.de | Installation Magento |
| meta_description | p_meta_desc.de | Online Shop Software Magento installieren … |
| image | p_image | Installation-magento.jpg |
| weight | p_weight | 0.00 |
| price | p_priceNoTax | 25.2017 |
| model | p_model | INSTALL-magento |
| description | p_desc.de | Wir installieren und konfigurieren ... |
| meta_Keyword | p_meta_key.de | Magento Installation |
| short_description | p_shortdesc.de | Installation der Online Shop Software Magento … |
| tax_class_id | p_tax | 1 |
Tabelle 1.9: Artikel-Datenfelder zwischen Magento und xt:Commerce
Es ist genauso wie bei den Kategorien möglich, eine Excel-Vorlage zu basteln, mit der Sie die Daten übernehmen. Es ist jedoch sehr wahrscheinlich, dass Sie gewisse Abstriche machen müssen, da das Shop-Konzept von Magento auf SKU’s und Attributen basiert. Beides waren Sie bisher von xt:Commerce nicht in dieser Art und Weise gewohnt. Zwar gibt es auch Artikelnummern, die mit den SKU-Nummern vergleichbar sind. Ebenso sind die Artikelmerkmale mit den Attributen vergleichbar. Je einfacher Ihr alter Shop gestrickt war, desto weniger Probleme entstehen. Dennoch steckt gerade beim Artikelimport der Teufel im Detail.
Kundendaten importieren
Auf der waaza-Homepage steht ein kostenloses Modul zum Download bereit, mit dem sich Ihre Kundendaten aus xt:Commerce herauskopieren lassen. Mit wenigen Handgriffen lässt sich die PHP-Datei so anpassen, dass die standardmäßige Import-Schnittstelle für den Kundenimport einsetzbar wird. Den Abgleich der einzelnen Datenfelder zwischen Magento und xt:Commerce entnehmen Sie Tabelle 1.10, wobei wir der einfachheithalber in unserem Beispiel die Versand- und Rechnungsadresse gleich setzen.
| Magento | xt:Commerce | Beispieldaten aus xtC-Shop |
|---|---|---|
| c.customers_email_address | kundler@Wallaby.de | |
| firstname | c.customers_firstname | Wolfgang |
| lastname | c.customers_lastname | Kundler |
| password_hash | c.customers_password | 9123456798555d6b8220:MR |
| prefix | c.customers_gender | Herr |
| taxvat | c.customers_vat_id | DE243976996 |
| billing_prefix | a.entry_gender | Herr |
| billing_firstname | a.entry_firstname | Wolfgang |
| billing_lastname | a.entry_lastname | Kundler |
| billing_street_full | a.entry_street_address | Germanenstraße 6 |
| billing_city | a.entry_city | Kleinaitingen |
| billing_region | a.entry_state | Bayern |
| billing_country | cd.countries_iso_code_2 | DE |
| billing_postcode | a.entry_postcode | 86507 |
| billing_telephone | c.customers_telephone | +49 8203 / 959764 |
| billing_company | a.entry_company | wallaby IT-Systems |
| billing_fax | c.customers_fax | +49 8203 / 959765 |
| shipping_prefix | a.entry_gender | Herr |
| shipping_firstname | a.entry_firstname | Wolfgang |
| shipping_lastname | a.entry_lastname | Kundler |
| shipping_street_full | a.entry_street_address | Germanenstraße 6 |
| shipping_city | a.entry_city | Kleinaitingen |
| shipping_region | a.entry_state | Bayern |
| shipping_country | cd.countries_iso_code_2 | DE |
| shipping_postcode | a.entry_postcode | 86507 |
| shipping_telephone | c.customers_telephone | +49 8203 / 959764 |
| shipping_company | a.entry_company | Wallaby IT-Systems |
| shipping_fax | c.customers_fax | +49 8203 / 959765 |
Tabelle 1.10: Kunden-Datenfelder zwischen Magento und xt:Commerce
Die Ausgabe der einzelnen Feldinhalte im CSV-Format steuern Sie, wie in Listing 1.29 auszugweise exemplarisch dargestellt. Den restlichen Teil finden Sie auf der CD bzw. auf unserer Homepage.
$ausgabe .= 'base;'; $ausgabe .= $kunde["customers_email_address"].';'; $ausgabe .= 'General;'; $ausgabe .= $kunde["customers_firstname"].';'; $ausgabe .= $kunde["customers_lastname"].';';
Listing 1.29: Auszug der CSV-Ausgabe für das Kunden Import-Profil
Erweitern Sie in der CSV-Datei die SQL-Abfrage der $customers_query, dann gibt das PHP-Skript alle kundenbezogenen Datenfelder aus, die Sie benötigen.
SELECT
a.entry_company,
a.entry_gender,
a.entry_firstname,
a.entry_lastname,
a.entry_street_address,
a.entry_suburb,
a.entry_postcode,
a.entry_city,
a.entry_state,
a.entry_zone_id,
a.entry_country_id,
c.customers_id,
c.customers_cid,
c.customers_gender,
c.customers_firstname,
c.customers_lastname,
c.customers_dob,
c.customers_password,
c.customers_email_address,
c.customers_vat_id,
c.customers_telephone,
c.customers_fax,
c.customers_newsletter,
c.customers_default_address_id,
cd.countries_name,
cd.countries_iso_code_2,
z.zone_name
FROM ".TABLE_CUSTOMERS." c
LEFT JOIN ".TABLE_ADDRESS_BOOK." a
ON c.customers_default_address_id = a.address_book_id
LEFT JOIN ".TABLE_COUNTRIES." cd
ON cd.countries_id = a.entry_country_id
LEFT JOIN ".TABLE_ZONES." z
ON a.entry_zone_id = z.zone_id
WHERE a.customers_id = c.customers_id
AND c.customers_id = '".$kundenid."'");
Listing 1.30: SQL-Abfrage für Kundendaten eines xt:Commerce-Shops
Die Installation des Kundenexport-Moduls ist relativ einfach. Sie kopieren die beiden geänderten Dateien in das Verzeichnis /admin/includes/modules/export/. Danach finden Sie im Backend von xt:Commerce unter „Module › xt:Module › Kundenexport“ das neue Modul. Jetzt nur kurz auf den Button Installieren klicken und anschließend auf den Start-Button. Anschließend können Sie die Kunden auswählen, die Sie im CSV-Format exportieren möchten. Eine einzelne Zeile für unser Beispiel aus Listing 1.29 sieht dann so aus: base;kundler@wallaby.de;General;Wolfgang;Kundler; ... Damit Sie beim Import keine Probleme mit Umlauten bekommen, öffnen Sie die Datei beispielsweise mit Notepad++ und klicken im Menü Format auf „Konvertiere zu UTF-8 ohne BOM“.
Kostenloses Modul für Kundenexport aus xt:Commerce
Den Datenimport nehmen Sie im Backend von Magento vor. Hier gehen Sie wie üblich zu „System › Import/Export › Profile“ (System › Import/Export › Profiles). Dort verwenden Sie das Profil Customers Import. Erst die Datei hochladen und dann das Profil starten. Nach einiger Zeit finden Sie die Kundendaten im Backend von Magento.

