Warning: Call-time pass-by-reference has been deprecated in /srv/www/vhosts/shopleiter.eu/httpdocs/mediawiki/extensions/Autolink/AutoLink.php on line 94 Notice: Undefined variable: desc in /srv/www/vhosts/shopleiter.eu/httpdocs/mediawiki/extensions/Description/Description.php on line 63 Warning: mkdir(): SAFE MODE Restriction in effect. The script whose uid is 10005 is not allowed to access /srv/www/vhosts/shopleiter.eu/httpdocs/mediawiki/images/thumb/f/f1/01_25.png owned by uid 30 in /srv/www/vhosts/shopleiter.eu/httpdocs/mediawiki/includes/GlobalFunctions.php on line 2012 Warning: mkdir(): SAFE MODE Restriction in effect. The script whose uid is 10005 is not allowed to access /srv/www/vhosts/shopleiter.eu/httpdocs/mediawiki/images/thumb/1/11/01_26.png owned by uid 30 in /srv/www/vhosts/shopleiter.eu/httpdocs/mediawiki/includes/GlobalFunctions.php on line 2012 Migration von xt:Commerce – ShopleiterWiki
Cloud Commerce Conference in Augsburg

Migration von xt:Commerce

Aus ShopleiterWiki

Wechseln zu: Navigation, Suche

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.

  1. Öffnen Sie mit Excel die aus xt:Commerce exportierte CSV-Tabelle!
  2. Fügen Sie ein neues Tabellenblatt ein und notieren die Spaltenüberschrift!
  3. Erstellen Sie ein paar Formeln für alle gewünschten Spalteninhalte!
  4. Verlängern Sie Zeile 2 bis zur erforderlichen Kategorieanzahl!
  5. 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.

Abb. 1.25: Excel für den Zusammenbau der Kategorie-Importdatei nutzen

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.

  1. Konfigurieren Sie ein erweitertes Profil namens „Import Categories“!
  2. Kopieren Sie Model und Klasse in den Ordner /app/code/local/!
  3. Hinterlegen Sie im /modules/-Verzeichnis eine neue XML-Datei!
  4. 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.

Export & Import Categories

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
email 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“.

Abb. 1.26: Kundenexport als CSV-Datei aus xt:Commerce

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.

Persönliche Werkzeuge