Shopware Silver & Erweiterung Partner
Zertifizierte Advanced Entwickler & Solution Architects
200+ E-commerce projecte
50+ Entwickler
Ein Plugin ist die wichtigste Möglichkeit, Ihre Shopware 6-Instanz programmatisch zu erweitern
Plugins in Shopware sind im Wesentlichen eine Erweiterung von Symfony-Bundles. Solche Bundles und Plugins können ihre eigenen Ressourcen wie Assets, Controller, Dienste oder Tests bereitstellen. Ein Plugin ist die wichtigste Möglichkeit, Ihre Shopware 6-Instanz programmatisch zu erweitern. Alles, was Sie für diese Anleitung benötigen, ist eine laufende Shopware 6-Instanz und vollen Zugriff sowohl auf die Dateien als auch auf die Befehlszeile. Natürlich müssen Sie PHP verstehen, aber das ist eine Voraussetzung für Shopware als Ganzes. Zuerst müssen Sie einen Namen für Ihr Plugin finden. Wir sprechen hier von einem technischen Namen, daher muss er die Funktion Ihres Plugins so kurz wie möglich beschreiben. Per Konvention wird es in UpperCamelCase geschrieben. Um Probleme mit doppelten Plugin-Namen zu vermeiden, sollten Sie ein Kurzpräfix für Ihr Unternehmen hinzufügen. Hier bei Solution25 verwenden wir „Sol“ als Präfix für diesen Fall. Für diese Beispiel-Anleitung verwenden wir den Plugin-Namen SolBasicExample. Nachdem Sie Ihren Namen gefunden haben, ist es an der Zeit, Ihr Plugin zu erstellen.
Das absolute Minimum für ein funktionsfähiges Plugin kann mit dem folgenden Befehl abgerufen werden: php/bin/console plugin:SolBasicExample erstellen Gehen Sie nun zu Admin und wählen Sie Einstellungen > System > Plugins, wo das neue Plugin SolBasicExample aufgeführt ist. Der Befehl erstellt dann ein Verzeichnis namens SolBasicExample in Ihrem Verzeichnis custom/plugins. Es wird auch eine Unterverzeichnisstruktur generieren, die die Datei composer.json, SolBasicExample.php und services.xml enthält. Damit Ihr Plugin voll funktionsfähig ist, fehlt nur noch eine Datei Composer.json im Stammverzeichnis Ihres Plugins. custom/plugins/SolBasicExample/composer.json Diese Datei enthält grundlegende Informationen, die Shopware über Ihr Plugin wissen muss, wie zum Beispiel: ● Der technische Name ● Die Beschreibung ● Der Autor ● Die verwendete Lizenz ● Die aktuelle Plugin-Version ● Die erforderlichen Abhängigkeiten Diese Datei kann auch von Composer gelesen werden, aber das ist nicht Teil dieses Handbuchs. Weitere Informationen müssen Sie dort hinzufügen: Der Typ muss Shopware-platform-plugin sein, damit Shopware Ihr Plugin sicher als solches erkennen kann und das Pflichtfeld muss mindestens shopware/core enthalten, um die Kompatibilität zu überprüfen. Wenn Sie jetzt in die Administration gehen, sehen Sie das Plugin in den Erweiterungen, wo Sie die Installation durchführen können, oder installieren Sie Ihr Plugin sicher über Ihr Kommandozeilen-Terminal und navigieren Sie zu Ihrem Shopware 6-Verzeichnis, das auch die benutzerdefinierten enthält Verzeichnis. Dort angekommen, müssen Sie die Liste der Plugins aktualisieren, die Shopware noch kennt. Dies geschieht mit dem folgenden Befehl: Diese Ausgabe ist ein gutes Zeichen, denn damit hat Shopware Ihr Plugin erfolgreich erkannt. Aber es ist noch nicht installiert, also wird folgendes gemacht: php/bin/console plugin:install –aktiviere SolBasicExample.
Gehen Sie zum Plugin-Verzeichnispfad „custom/plugins/SolBasicExample/src/Resources/config“ Und erstellen Sie manuell eine config.xml-Datei. Alternativ zum manuellen Erstellen der Datei config.xml können Sie diese auch automatisch erstellen, wenn Sie den Befehl plugin:create mit der Option -c aufrufen: php/bin/console plugin:create -c So sollte es aussehen:<?xml version="1.0" encoding="UTF-8"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/shopware/platform/master/src/Core/System/SystemConfig/Schema/config.xsd"> <card> <title>SolBasicExample settings</title> </card> </config>
Nun, im Wesentlichen ist ein Dienst nur eine PHP-Klasse, die einige Funktionen für andere Teile unserer Anwendung bereitstellt. Sie könnten beispielsweise einen ProductService, CustomerService usw. haben, die jeweils einen bestimmten Bereich Ihrer App bearbeiten. Ein solcher Dienst enthält in der Regel Methoden, die von Controllern oder auch anderen Diensten aufgerufen werden. Um sie aufrufen zu können, müssen die anderen Klassen unseren Dienst in ihre Konstruktoren „injizieren“. Und dafür muss unser Service in Shopware über die Datei services.xml registriert werden. Erstellen wir also eine Serviceklasse. Wir nennen es vorerst einfach SolService und legen es auch in das Unterverzeichnis Service ab. Im wirklichen Leben empfehle ich, die Serviceklassen nach ihrem Thema oder Gebiet zu benennen, plus dem Stichwort Service. Es ist viel einfacher, sich zu orientieren, wenn Sie Ihre Klassen richtig benennen, wie ImportService, ExportService usw. So sieht das Service-Setup in src/Service/SolService.php aus:Nun, im Wesentlichen ist ein Dienst nur eine PHP-Klasse, die einige Funktionen für andere Teile unserer Anwendung bereitstellt.<?php namespace SolBasicExample\Service; class SolService { public function SolMethod($variable) { var_dump($variable); } }
Und dies ist die aktualisierte Version der Datei services.xml mit dem Eintrag, der den neuen Dienst enthält:<?xml version="1.0" ?> <container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> <services> <service id="SolBasicExample\Service\SolService"> </service> </services> </container>
Wenn Sie mehr über E-Commerce-Entwicklungsplattformen oder Apps erfahren möchten, lesen Sie unsere Lexika für Shopify und Shopware. Unser engagiertes Outsourcing-Team kann Ihr Partner im E-Commerce sein.