
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:
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.
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:
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.

Markus Schall entwickelt seit 1994 individuelle Datenbanken, Schnittstellen und Geschäftsanwendungen auf Basis von Claris FileMaker. Er ist Claris-Partner, FMM-Award-Gewinner 2011 und Entwickler der ERP-Software gFM-Business. Zudem ist er Buchautor und Gründer des M. Schall Verlags.
Verwandte Beiträge
-
Drucker mit Voreinstellungen ansteuern in FileMaker.
Im Rahmen eines Projektes hatte ich die Aufgabe, mit FileMaker mehrere Drucker zu bedienen, bei denen auch Papierfächer einzeln angesteuert werden sollen. Dies ist am Einfachsten realisierbar, wenn die Druckereinstellungen jeweils in einem Script gespeichert werden, das die Dokumente mit dem Scriptbefehl Drucken [Wiederherstellen] auch sofort auf dem Drucker ausgibt....
-
FileMaker Konferenz in diesem Jahr mit Besucherrekord.
Vom 8. bis zum 10. Oktober 2015 fand die FileMaker Konferenz FMK2015 statt, die in diesem Jahr mit einem Besucherrekord aufwarten konnte. Insgesamt 206 Teilnehmer haben sich im Hamburger Novotel City Hamburg eingefunden, um 23 Referenten in 35 Sessions gespannt zuzuhören. Auch FileMaker selbst war mit 14 Mitarbeitern aus den...
-
FileMaker Magazin eröffnet mit Stammtisch in Hamburg.
Am 1. August 2013 hat der in Hamburg ansässige K&K Verlag des FileMaker Magazins zum "FileMaker Stammtisch Spezial" in seine neuen Verlagsräume eingeladen. Seit 1994 veröffentlicht der K&K-Verlag das FileMaker-Magazin, das sich seitdem in der deutschsprachigen FileMaker-Szene zu einer Institution entwickelt hat. Kürzlich hat der K&K Verlag neue Räumlichkeiten in...






Das ist ja mal eine super Sache! Habe alles sogar mit der Demo von Filemaker zum laufen gebracht! Nun wirds Zeit Filemaker zu kaufen :-)
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.
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?
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…)
Was ich leider nicht so richtig herauslese, ist die Frage ob es eine Schnittstelle zu einem Wartenwirtschaftsprogramm wie zum Beispiel Orgamax gibt?
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.