© svetabelaya/Shutterstock.com
Teil 1: Externe Systeme an Shopware 6 anbinden

Geschickt miteinander verknüpft


In der Artikelserie im letzten Jahr [1] haben wir die Änderungen in Shopware 6 und die neuen Möglichkeiten, die die APIs bieten, besprochen und das neue Plug-in-System kennengelernt. In dieser Artikelserie möchten wir nun tiefer in die Plug-in-Entwicklung einsteigen und ein externes System an Shopware anbinden.

Im ersten Teil werden wir die Produkte in Shopware übernehmen, Plug-in-Konfigurationen erstellen und automatisierte Aufgaben definieren. Im zweiten Teil werden wir dann schauen, wie wir getätigte Bestellungen wieder exportieren können.

Die großen Änderungen im Plug-in-System im Vergleich zu Shopware 5 haben wir im letzten Artikel vorgestellt. Wir werden das Plug-in erstellen und auf die zwischenzeitlichen Änderungen z. B. an der composer. json eingehen, um wieder auf einen aktuellen Stand zu kommen. Wir lernen die Plug-in-Konfiguration kennen, schauen uns an, wie ein Command erstellt wird, und eignen uns an, wie man regelmäßige, sich wiederholende Aufgaben mit einem ScheduledTask umsetzt. Aus Platzgründen sind die Listings an unwichtigen Stellen gekürzt. Der vollständige Quellcode kann auf GitHub [2] eingesehen werden. Wer aus den vorherigen Artikeln noch eine funktionierende Demoumgebung hat, kann den folgenden Abschnitt getrost überspringen.

Demoumgebung aufsetzen

Wir verwenden die Docker-Umgebung, die auf einem Linux-Client ausgeführt wird. Zuerst klonen wir das Entwicklungstemplate von GitHub mit git clone git@github.com:shopware/development.git. Nun haben wir die Entwicklungsvorlage für Shopware 6 im Verzeichnis development. Anschließend gehen wir mit cd development in das Verzeichnis und klonen noch das eigentliche Shopware-Plattform-Repository mit git clone git@github.com:shopware/platform.git in das Standardverzeichnis. Achtung: Bitte kein anderes Verzeichnis beim Klonen angeben, da das wichtig für das Autoloading ist. Damit haben wir jeglichen Quellcode, den wir zum Starten auf unserem Rechner benötigen. Um nun die notwendigen Docker-Container zu bauen und zu starten, geben wir ./psh.phar docker:start ein. Damit werden alle Docker-Container gebaut und gestartet. Anschließend verbinden wir uns mit dem Application-Container via ./psh.phar docker:ssh und starten die Installation mit ./ psh.phar install. Das kann beim ersten Mal einige Zeit in Anspruch nehmen, da bei der initialen Ausführung einige Caches erstellt werden müssen. Um zu prüfen, ob die Installation erfolgreich war, könnt ihr einfach euren Browser öffnen und auf http://localhost:8000 zugreifen. Wenn ihr z. B. Mac-Anwender seid, könnt ihr das Ganze auch lokal aufsetzen. Eine beispielhafte Virtual-Host-Konfiguration könnt ihr in [3] unter Setting up your webserver finden. Dann führt ihr bin/setup aus und werdet durch einen interaktiven Installationsprozess geführt. Hat etwas während der Installation nicht funktioniert, prüft, ob es .psh.yaml.override gibt. Wenn nicht, startet das Set-up-Skript mit ./psh.phar install erneut.

Plug-in-Basic

Fangen wir nun mit dem Erstellen des Beispiel-Plug-ins an: Wir wechseln zuerst in das Verzeichnis shopware-root/custom/plugins und erstellen das Verzeichnis ShopwareBlogFastBillConnector. Das Verzeichnis benennen wir nach dem VendorPrefix ShopwareBlog und dem technischen Plug-in-Namen FastBillConnector. Andere Verzeichnisnamen sind prinzipiell möglich, sollten aber aus Gründen der Übersichtlichkeit nicht verwendet werden. Um für die späteren Schritte gewappnet zu sein, erstellen wir alle Verzeichnisse wie in Listing 1 abgebildet.

Listing 1: Plug-in-Struktur

ShopwareBlogFastBillConnector > src --> Api --> Command --> Importer --> Resources ----> config --> ScheduledTask --> FastBillConnector.php > composer.json

Jedes Plug-in basiert auf einer composer.json (Listing 2), die den Namen, die Version, die Requirements und viele weitere Metainformationen enthält. Die Entwickler, die mit Composer vertraut sind, werden hier auf viel Bekanntes stoßen. Jedes Plug-in, das wir entwickeln, kann wie jedes andere Package automatisch via composer require hinzugefügt werden. Die Anwendung jeglicher Composer-Schema-Elemente [4] ist ausdrücklich erwünscht. Eine detaillierte Beschreibung der jeweiligen Einträge aus der composer.json befindet sich im vorhergegangenen Shopware-6-Artikel [1].

Listing 2: composer.json

 { "authors": [ { "name": "shopware blog", "role": "Manufacturer" } ], "require": { "guzzlehttp/guzzle": "6.4.1", "fastbill/fastbill-php-sdk": "^0.0" }, ... }

Im Gegensatz zu unserem letzten Plug-in haben wir nun eine externe Abhängigkeit in der composer.json definiert. Wir verwenden das von FastBill selbst veröffentlichte PHP SDK. Das spart uns einiges an Aufwand und lässt uns direkt in die Importprogrammierung einsteigen, ohne uns um die Kommunikation mit dem API kümmern zu müssen. Eine weitere kleine Änderung, die die Shopware-Version 6.1.1 [4] mit sich bringt, ermöglicht es uns, nun genau anzugeben, welcher Autor aus der composer.json verwendet werden soll, um diesen im PluginManager darzustellen. Dafür haben wir de...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang