Mit FileMaker Artikel aus xt:Commerce in wpShopGermany importieren.


FileMaker für den Import von Artikeln aus xt:Commerce nach wpShopGermany nutzenViele Betreiber von Onlineshops pflegen heute neben dem reinen Onlineshop auch Blogs, die oftmals auf dem beliebten Blog-System WordPress basieren. Ein Blog dient hierbei in der Regel zur Generierung neuer Besucher, die über die meist aktuellen Inhalte des Blogs aus Suchmaschinen auf den Blog gelangen. Letztlich möchte der Shopbetreiber aber nicht nur neue Besucherströme generieren, sondern vor allem auch neue Umsätze. Der traditionelle Weg besteht darin, Inhalte oder Artikel des Onlineshops auf dem Blog in den Artikeln oder über klassische Bannerwerbung zu verlinken. Ein anderer und neuer Ansatz ist, direkt auf dem Blog einen Onlineshop einzurichten, in dem die Besucher des Blogs direkt Produkte kaufen können, ohne den Blog verlassen zu müssen. Mit wpShopGermany ist für WordPress ein günstiges Onlineshop-Plugin erhältlich, das in deutscher Sprache vorliegt und den Ansprüchen des deutschen Markes gerecht wird. Das Plugin ist bereits ab 18,95 Euro in einer Light-Version und für 99,99 Euro als Enterprise-Version für beliebig viele WordPress-Blogs erhältlich. In diesem Artikel wird erläutert, wie die Produkte aus dem Onlineshop, in diesem Fall xt:Commerce, ihren Weg in das WordPress-Shopsystem finden. Als Schnittstelle wird für diesen Zweck eine FileMaker-Datenbank genutzt.

ODBC-Datenquelle zur MySQL-Datenbank von wpShopGermany einrichten

Im Artikel FileMaker und MySQL am Beispiel xt:Commerce wurde bereits erläutert, wie in eine FileMaker-Datenbank eine Schnittstelle zum Onlineshopsystem xt:Commerce integriert werden kann. Für diesen Zweck wurde eine ODBC-Datenquelle zur MySQL-Datenbank von xt:Commerce eingerichtet, über die ein voller Zugriff auf alle Datentabellen des Onlineshops zur Verfügung steht. In diesem Artikel wird davon ausgegangen, daß eine Datenbank existiert, die die Tabellen und Dateninhalte der xt:Commerce-Datenbank enthält. Wie die interne Verknüpfung und der Beziehungsgraph einer solchen FileMaker-Datenbank aussehen kann, wurde in diesem Artikel auf xtc:load beschrieben. So könnte eine FileMaker-Lösung mit Integration von Artikeln aus xt:Commerce aussehen:

FileMaker-Datenbank mit Artikeln aus xt:Commerce

Um eine FileMaker-Datenbank um eine Schnittstelle zum WordPress-Shopsystem wpShopGermany zu erweitern, ist eine zusätzliche ODBC-Datenquelle zur MySQL-Datenbank von WordPress erforderlich. Diese wird prinzipiell genauso eingerichtet wie im erstgenannten Artikel beschrieben. Nach der Einrichtung der ODBC-Datenquelle besteht voller Zugriff auf die Datentabellen von WordPress und vom wpShopGermany Plugin. Dieser Artikel behandelt lediglich den Export reiner Produktdaten ohne Produktvarianten oder Attribute. Alle dynamischen Daten von wpShopGermany werden in folgenden Datentabellen gespeichert:

  • wp_wpshopgermany_attribute
  • wp_wpshopgermany_cab
  • wp_wpshopgermany_downloadplus
  • wp_wpshopgermany_gutscheine
  • wp_wpshopgermany_kunden
  • wp_wpshopgermany_land
  • wp_wpshopgermany_lieferanten
  • wp_wpshopgermany_mwst
  • wp_wpshopgermany_order
  • wp_wpshopgermany_order_products
  • wp_wpshopgermany_orderlog
  • wp_wpshopgermany_ordervars
  • wp_wpshopgermany_products
  • wp_wpshopgermany_products_vari
  • wp_wpshopgermany_produktgruppen
  • wp_wpshopgermany_produktvars
  • wp_wpshopgermany_rechnungen
  • wp_wpshopgermany_versandzonen
  • wp_wpshopgermany_zahlvarianten

Tabelle wp_wpshopgermany_products und Produktbilder

Um die reinen Artikeldaten in wpShopGermany zu importieren, benötigen wir ausschließlich die Tabelle

wp_wpshopgermany_products.

In dieser Tabelle sind alle Stammdaten eines Shopartikels enthalten. Zugeordnete Artikelbilder befinden sich auf Dateiebene im WordPress-Verzeichnis

../wp-content/uploads/produktbilder.

In diesem Verzeichnis befindet sich für jeden Artikel, der ein Produktbild enthält, ein Verzeichnis mit dem Namen der jeweiligen Artikel-ID. In diesem Verzeichnis befinden sich dann die zum Artikel zugeordneten Produktbilder.

Vorbereitung der Schnittstelle von FileMaker nach wpShopGermany

Um die Artikeldaten aus FileMaker problemlos in die MySQL-Datenbank von wpShopGermany exportieren zu können, werden in der FileMaker-Datenbank, die bisher nur die Felder aus xt:Commerce enthält, weitere spezifische Felder für wpShopGermany benötigt. Öffnen Sie hierfür die Datenbankverwaltung der Felddefinition und fügen Sie folgende Felder hinzu:

  • wpShopGermany_Produkttyp (Text)
  • wpShopGermany_Template (Text)
  • wpShopGermany_Kategorie (Zahl)

Das erste Feld muß bei einem Standard-Shop auf WordPress den Wert „normalprodukt“ enthalten, das Template-Feld enthält standardmäßig den Wert „standard.phtml“. Das Kategorie-Feld  enthält die in wpShopGermany zugeordnete Kategorie, die im WordPress-Shopsystem unter „Produktgruppen“ eingerichtet werden können.

Produktgruppen einrichten in wpShopGermany

Schnittstelle Teil 1: Export der Artikeldaten von FileMaker nach wpShopGermany

Wurden die genannten drei Felder in der FileMaker-Datenbank, die die Artikel aus xt:Commerce enthält, angelegt, können wir nun mit dem Export der Produkte in die Datenbank von wpShopGermany beginnen. Die Tabelle wp_wpshopgermany_products besteht aus folgenden Feldern:

  • id (Zahl, eindeutige ID des Produkts)
  • cdate (Zeitstempel, Erstellung des Produkts)
  • name (Text, Name des Produkts)
  • anr (Text, Artikelnummer (MPN) des Produkts)
  • typ (Text, Produkttyp)
  • partikel (wird in dieser Schnittstelle nicht verwendet)
  • preis (Zahl, Preis des Produktes, Punkt als Dezimaltrennzeichen)
  • mwst (Mehrwertsteuer-ID, kann in wpShopAdmin konfiguriert werden, Standard = 1)
  • feinheit (wird in dieser Schnittstelle nicht verwendet)
  • fmenge (Zahl, Menge, enthält i.d.R. 0.00)
  • beschreibung (Text, Artikelbeschreibung, kann HTML enthalten)
  • pgruppe (Zahl, Produktgruppe)
  • ptemplate_file (Text, Templatedatei)
  • weight (Zahl, enthält das Gewicht des Artikels, Punkt als Dezimaltrennzeichen)
  • stock (Zahl, enthält den Bestand, wird in dieser Schnittstelle mit 0 übergeben)
  • stock_count (Zahl, wird in dieser Schnittstelle mit 0 übergeben)
  • produktvars (wird in dieser Schnittstelle nicht verwendet)
  • deleted (Zahl, Löschkennzeichen, 0 = aktiv, 1 = gelöscht)
  • downloadplus (Zahl, wird in dieser Schnittstelle mit 0 übergeben)
  • variantenplus (wird in dieser Schnittstelle nicht verwendet)
  • lang_parent (Zahl, wird in dieser Schnittstelle mit 0 übergeben)
  • lang_locale (wird in dieser Schnittstelle nicht verwendet)

Um die Daten aus der FileMaker-Datenbank direkt in die MySQL-Datenbank von wpShopGermany zu schreiben, erstellen wir für diesen Zweck nun ein Script im ScriptMaker, das ein entsprechendes SQL-Statement enthält, um die Artikel aus der FileMaker-Datenbank in die MySQL-Datenbank von xpShopGermany zu schreiben. Dies geschieht mit folgendem Befehl:

SQL Query ausführen [Ohne Dialogfeld; DSN: ODBC-Datenquelle; Berechneter SQL-Text:
 "INSERT INTO
`wp_wpshopgermany_products` (`id`, `cdate`, `name`,`anr`, `typ`, `preis`, `mwst`, `fmenge`,
`beschreibung`,`pgruppe`, `ptemplate_file`, `weight`,`stock`, `stock_count`, `deleted`,
`downloadplus`, `lang_parent`)
VALUES ('" &
xtc_products::products_id & "', '" &
LiesAlsText(ZeichenRechts(Hole(SystemDatum); 4) & "-" & ZeichenMitte(Hole(SystemDatum); 4; 2) &
"-" & ZeichenLinks(Hole(SystemDatum); 2) & " " & Hole(SystemUhrzeit)) & "', '" &
Austauschen(xtc_products::products_name; """; """) & "', '" &
xtc_products::products_model & "', '" &
xtc_products::wpShopGermany_Produkttyp & "', '" &
Falls(
  MusterAnzahl ( LiesAlsText(xtc_products::xCal_Preis_brutto) ; "," ) = 0;
LiesAlsText(xtc_products::xCal_Preis_brutto) & ".00";
  ZeichenMitte(xtc_products::xCal_Preis_brutto; Position(xtc_products::xCal_Preis_brutto; "," ; 1 ; 1 ) ; 1) = ",";
LiesAlsText(Austauschen(xtc_products::xCal_Preis_brutto; ","; ".")) & "0";
LiesAlsText(Austauschen(xtc_products::xCal_Preis_brutto; ","; "."))) & "', " &
"1" & ", " &
"'0.00" & "', '" &
Austauschen(xtc_products_description::products_short_description; """; """) & "', " &
xtc_products::wpShopGermany_Kategorie & ", '" &
xtc_products::wpShopGermany_Template & "', '" &
"0.00'" & ", " &
"0" & ", " &
"0" & ", " &
"0" & ", " &
"0" & ", " &
"0)"]

In diesem SQL-Statement wird davon ausgegangen, daß die oben genannten drei zusätzlichen Felder angelegt wurden und die Feldbezeichnungen der Shopartikel denen aus xt:commerce entsprechen.

Achtung! Bitte beachten Sie, daß die Felder für den Artikelnamen und die Artikelbeschreibung ggf. auch Anführungszeichen oder Apostrophe enthalten können. Um die Funktion des SQL-Statements zu gewährleisten, das für seine Funktion ebenfalls Apostrophe enthält, sollten Sie diese Zeichen für die Verwendung im SQL-Statement in HTML-Entities umwandeln.

Da der Artikelpreis in xt:Commerce davon abhängt, ob für den jeweiligen Artikel ein Sonderpreis existiert, wurde er in der Formel <<xCal_Preis_brutto>> berechnet:

Wenn(IstLeer(xtc_specials::specials_new_products_price);
  Austauschen(products_price; "."; ",");
(Austauschen(xtc_specials::specials_new_products_price; "."; ",")) * 1,19
)

Teil 2: Artikelbilder aus xt:Commerce für wpShopGermany exportieren

Wie bereits erwähnt, befinden sich die einem Artikel zugeordneten Bilder in wpShopGermany jeweils in einem Verzeichnis, das den gleichen Namen trägt wie die Artikel-ID. Da FileMaker mit Bordmitteln weder Bilder aus einer URL in ein Medienfeld übertragen noch Verzeichnisse anlegen kann, benötigen wir für den folgenden Schritt das URL-Plugin und das File-Plugin von Troi. Beide Plugins können voll funktionsfähig aber zeitbeschränkt auf der Website des Herstellers kostenlos heruntergeladen werden. Troi bietet viele Varianten der Lizensierung von FileMaker-Plugins an.

Um das benötigte Verzeichnis mit dem Namen der Artikel-ID zu erzeugen, bedienen wir uns der Funktion „TrFile_CreateFolder“ des Troi File Plugins, nachdem wir zuvor den vollständigen Pfad des Verzeichnisses in eine Variable geschrieben haben. Beide Funktionen sehen dann folgendermaßen aus:

Variable setzen [$FM_Pfad; Wert: "filemac:/PfadAufIhremRechner/" & xtc_products::Product_ID]
Variable setzen [$Dateiname; Wert: $FM_Pfad  & "/" & xtc_products::products_ID & ".jpg"]

In xt:Commerce wird der Dateiname des zum Artikel zugehörigen Bildes im Feld <<products_image>> gespeichert. Die gesamte URL für den Aufruf des Artikelbildes lautet in FileMaker:

"http://IhrShop.de/images/product_images/info_images/" & xtc_products::products_image.

Als Nächstes legen wir in der FileMaker-Datenbank ein Medienfeld mit dem Namen <<Bildcontainer>> an. Mit der Funktion „TURL_Get“ kann das Bild nun vom Webserver in das erstellte Medienfeld übertragen werden:

Feldwert setzen [xtc_products::Bildcontainer; Wenn(xtc_products::products_image <> ""; TURL_Get("";
"http://IhrShop.de/images/product_images/info_images/" & xtc_products::products_image ); "")

Nach dieser Funktion im Script befindet sich das Artikelbild des xt:Commerce-Artikels im FileMaker-Medienfeld mit dem Namen „Bildcontainer“. Von diesem Feld aus kann das Bild nun mit der Funktion

Exportiere alle Feldwerte [xtc_products::Bildcontainer; "$Dateiname"]

in ein beliebiges Verzeichnis exportiert werden. Alle erzeugten Verzeichnisse mit den Bildern können anschließend einfach per FTP in das WordPress-Verzeichnis

../wp-content/uploads/produktbilder.

übertragen werden. Mit einem FTP-Plugin läßt sich selbstverständlich auch dieser Schritt direkt in FileMaker automatisieren.

Vollständiges FileMaker-Script in der Übersicht

Mit den genannten Maßnahmen sind wir nun in der Lage, einen einzelnen Artikel inklusive Produktfoto von xt:Commerce nach wpShopGermany zu exportieren. Damit alle aufgerufenen Artikel auf einen Schlag exportiert werden können, kann nun einfach im Script eine Schleife um die bisher programmierten Funktionen herum implementiert werden. Das vollständige FileMaker-Script sähe dann beispielsweise folgendermaßen aus:

Vollständiges FileMaker-Script: Export nach wpShopGermany

Mit diesem Script ist es möglich, alle aufgerufenen Datensätze in der Datenbank mit den Artikeln aus xt:Commerce in einem Rutsch in das WordPress-Shopsystem wpShopGermany zu exportieren, inklusive Abfrage an den Benutzer, ob er diese Aktion wirklich durchführen möchte. Eine vollständige Lösung wird an dieser Stelle ausdrücklich nicht zur Verfügung gestellt, weil der Entwicklungsvorgang dieser Schnittstelle sehr stark von den individuellen Eigenschaften der eingesetzten FileMaker-Datenbank abhängig ist. Wer in seiner Datenbank weitere dynamische Daten hat wie unterschiedliche Mehrwertsteuersätze, Artikelgewicht oder den Lagerbestand führt, kann diese Daten mit einfachen Modifikationen ebenfalls in das WordPress-Shopsystem wpShopGermany exportieren.

, , , , , ,

  1. #1 von Hermann Schmidt am 26. Juni 2011 - 08:28

    Das ist ja mal eine super Sache! Habe alles sogar mit der Demo von Filemaker zum laufen gebracht! Nun wirds Zeit Filemaker zu kaufen :-)

  2. #2 von Dennis Farin am 28. Juni 2011 - 10:18

    Autsch ist das ne lange Anleitung.
    Ich selbst bin schwer begeistert von wpShopGermany, bis auf ein paar Kleinigkeiten ist dies das perfekte Shop Plugin für kleine Nischen Shops.
    Das mit dem Filemaker ist mir so komplett neu, aber es sieht auf jeden Fall danach aus als sollte man das mal testen.

  3. #3 von Michael am 3. Juli 2011 - 03:10

    Interessanter Ansatz. Die Anleitung funktioniert einwandfrei, und lässt sich sicherlich auch auf andere Systeme anwenden. Ich habe mir wpShopGermany eine Weile nicht mehr angesehen – Ist das Plugin nun wirklich rechtssicher, oder sind noch Eigenheiten wie der Onepagecheckout enthalten?

  4. #4 von Marco am 31. Juli 2011 - 17:52

    Mein nächster bzw. erster Shop wird sicherlich auch auf WordPress laufen… wie jedes andere Projekt auch. ;) Bin mir allerdings unsicher, ob man von XT wirklich so leicht zu WordPress migrieren kann bzw. sollte (URL-Struktur, Schnittstellen…)

  5. #5 von Peter am 20. September 2012 - 14:44

    Was ich leider nicht so richtig herauslese, ist die Frage ob es eine Schnittstelle zu einem Wartenwirtschaftsprogramm wie zum Beispiel Orgamax gibt?

    • #6 von Markus Schall am 5. Oktober 2012 - 18:53

      Solange technische Möglichkeiten für FileMaker existieren, auf die entsprechenden Datentabellen zuzugreifen, sind prinzipiell Schnittstellen zu allen Systemen möglich. Einige Systeme wie z.B. Magento lassen jedoch einen direkten Zugriff auf die Tabellen nicht zu, stellen dafür aber eine API zur Verfügung, die dann in den meisten Fällen ebenfalls für einen Datenzugriff genutzt werden kann.

(wird nicht veröffentlicht)