Shopware Plugin Tutorial - Wir erstellen ein Plugin - Teil 1

Shopware Plugin Tutorial - Wir erstellen ein Plugin - Teil 1

Daniel Wolf 08. Juli 2018 2

Du hast die Plugin-Idee für Deinen Shop oder den Shopware-Store, gerade aber keinen Entwickler zur Hand? Kein Problem!

In dieser Blogserie zeige ich Euch, wie wir unser eigenes Shopware Plugin erstellen. Dabei seid Ihr vom Konzept bis zum fertigen Plugin hautnah dabei und erfahrt einiges über PHP, Shopware und Plugin-Entwicklung im Allgemeinen.

Lesezeit: ~9 Minuten

Shopware Plugin erstellen - Bevor wir loslegen

Grundsätzlich wäre natürlich hilfreich, wenn Ihr bereits Erfahrung mit PHP und Shopware habt. Falls das nicht der Fall sein sollte, ist das auch nicht weiter schlimm, da ich auf den Code eingehen werde :)

Vor dem Beginn der eigentlichen Entwicklung werden wir uns erstmal Gedanken über unser neues Tool machen. Es ist enorm wichtig sich schon am Anfang der Reise bewusst zu sein, was auf einen zukommt. Viele denken, dass es beim Programmieren nur auf den Code ankommt. Die wahre Kunst ist es allerdings, bereits vorher genau zu wissen, wie man das Plugin umsetzen wird und es dann einfach nur noch niederzuschreiben. Dabei klärt man grundlegende Fragen:

  • Welche Aufgabe erfüllt das Plugin? Was soll es eigentlich können?
  • Welche Shopware-Komponenten brauche ich?
  • Wie und mit welchen Funktionen möchte ich es umsetzen?
  • Kann ich Code wiederverwenden oder Services von Shopware benutzen?

Was soll unser Tool können?

Wir erstellen in dieser Serie ein Plugin, welches Bilder in den Artikelnamen, dem sie zugeordnet sind, umbenennt. Shopware selbst empfiehlt aus SEO-technischen Gründen, dass der Dateiname eines Bildes idealerweise nach dem zugewiesenen Produkt oder der Kategorie benannt werden soll. Das ist vor allem für die Google Bildersuche wichtig. Wenn ein Kunde nach einem Artikel sucht, findet er Dein Bild also deutlich häufiger, wenn der Name Deinem Produkt ähnelt.

Da es ziemlich lästig werden kann, den Namen ständig per Hand anzupassen, bevor man ein Bild hochlädt, bauen wir in den kommenden Blogposts dieses Plugin und erleichtern somit vielen Menschen ihr Leben :)

Shopware Plugin erstellen - Das Konzept

Wie ich oben bereits erwähnt habe, ich es sehr wichtig bereits vor Beginn der Entwicklung die genauen Anforderungen des Plugins zu kennen. Ich möchte, dass unser Tool im Großen und Ganzen zwei Funktionen hat:

1) Ein Cronjob, der regelmäßig läuft und automatisch Bilder, die noch einen alten Namen haben, umbenennt.

2) Die Möglichkeit im Backend manuell einen Prozess zu starten, mit dem alle Bilder auf einmal umbenannt werden (ähnlich wie die Thumbnailgenerierung)

Ich habe mich hierbei für diese beiden Funktionen entschieden, damit wir uns keinen Stress machen müssen, weil die Bilder automatisch umbenannt werden und wir immer noch alle Bilder auf einmal bearbeiten können, falls wir mal nicht warten möchten.

shopware plugin erstellen konzept tutorial

Shopware Plugin erstellen - Die Basis

Nun da wir die Grundfunktionen kennen, können wir uns Gedanken um die Umsetzung dieser Funktionen machen. Als Grundbaustein brauchen wir ein Plugin, das man im Shop hochladen kann. In Shopware gibt es zwei mögliche Wege ein Plugin aufzubauen. In dieser Reihe zeige ich Euch die neue Struktur (ab SW 5.2).

Funktion "Bilder über Cronjob umbenennen"

Zunächst müssen wir eine Funktion einbauen, die den Cronjob beim Installieren des Plugins erstellt und ihn wieder löscht, sobald das Plugin entfernt wird.

Danach erstellen wir einen sogenannten Subscriber. Diesen richten wir so ein, dass er eine bestimmte Funktion ausführt, sobald unser Cronjob gestartet wird.

Im nächsten Schritt holen wir uns die Bilder, die in einem Durchlauf des Cronjobs umbenannt werden sollen. Der Einfachheit halber würde ich vorschlagen, dass wir hierfür eine zweite Tabelle erstellen, in der wir die ID des Bildes eintragen, sobald es umbenannt wurde. Somit können wir uns bei einem Cronjob-Durchlauf z. B. 10 Bilder holen, die noch nicht umbenannt wurden.

Zusätzlich dazu benötigen wir eine Funktion, die uns einen neuen Namen aus dem Artikel erstellt und das Bild danach umbenennt. Hierbei werden wir unter anderem auf den MediaService von Shopware zugreifen. Zum Schluss müssen wir noch einen Eintrag in unserer Tabelle erstellen, damit wir dieses Bild beim nächsten Durchlauf nicht noch einmal bearbeiten.

Funktion "Bilder manuell umbenennen"

Hierfür müssen wir zunächst im Backend einen Button einrichten, der den Umbenennungs-Prozess starten soll. Da Shopware diese Funktion bereits bei der Thumbnail-Generierung imlementiert hat, wäre es sicherlich sinnvoll, wenn wir uns den Code dafür anschauen und nachbauen. Shopware verwendet hierfür hauptsächlich zwei Komponenten. Zum einen gibt es den Backend-Controller, über den die Thumbnails generiert werden. Der andere Teil ist das Fenster, welches wir im Backend sehen und den aktuellen Stand anzeigt. Hierbei finde ich wichtig, dass wir auch wirklich beide Komponenten verwenden, damit wir später auch immer wissen, wie viele Bilder bereits bearbeitet worden sind.

shopware thumbnail erstellung

So oder ähnlich soll unser Fenster aussehen

Was kommt jetzt?

Das Konzept hätten wir damit erstmal auf die Beine gestellt. Falls noch einige Dinge oder Begriffe unklar sind, müsst Ihr Euch keine Sorgen machen. Wir werden bei der Umsetzung in den nächsten Artikeln nochmal genauer auf den jeweiligen Code eingehen. Jetzt kümmern wir uns erstmal um die Plugin-Basis.

Plugin erstellen

Für ein minimales Plugin brauchen wir erstmal nur einen Ordner und eine php-Datei, die in dem Ordner liegt. Beide müssen dabei den gleichen Namen tragen, welcher sich wie folgt, zusammensetzt:

Entwicklerkürzel + Pluginname

Unser Entwicklerkürzel bei 8mylez ist "Emz". Der Name soll das Plugin in wenigen Worten beschreiben, weshalb ich es "RenameImages" nenne. Zusammengesetzt erhalten wir also den technischen Pluginnamen "EmzRenameImages".

shopware ordner plugin basis

Inhalt der php-Datei

In unserem EmzRenameImages-Order liegt also eine EmzRenameImages.php. Wenn Ihr die php-Datei erstellt habt, könnt Ihr sie mit einem Editor Eurer Wahl (Ich benutze Atom) öffnen und folgenden Inhalt reinkopieren:

Der Namespace entspricht unserem technischen Pluginnamen. Er dient dazu, damit es später keine Probleme gibt, falls ein anderer Pluginentwickler Klassen mit dem gleichen Namen wie wir verwendet.

Mit "use Shopware\Components\Plugin" geben wir an, dass wir die Shopware-Klasse "Plugin" in unserem Plugin verwenden möchten.

Zuletzt erstellen wir eine Klasse, die den tech. Pluginnamen trägt und die Plugin-Klasse von Shopware erweitert.

Plugin hochladen und testen

Nachdem wir die Datei abgespeichert haben, ist die Grundversion unseres Plugins auch bereits fertig. Um das Plugin zu testen, bräuchten wir einen Shopware-Shop. Da es Vorteile hat, lokal zu arbeiten, würde ich Euch das natürlich auch empfehlen. Falls Du mehr über die Vorteile erfahren möchtest oder nicht ganz weißt, wie Du Dir eine lokale Entwicklungsumgebung erstellst, kannst Du das in diesem Blogbeitrag anschauen :)

Um das Plugin über den Pluginmanager zu installieren, müsst Ihr den Ordner erstmal zu einer Zip-Datei archivieren. Wir verwenden dafür das Programm Keka, weil es eine Option für das Ausschließen von Mac-Dateien (.DS_Store) hat.

Nachdem der Ordner archiviert wurde, kannst Du es auch schon hochladen, installieren und aktivieren. Natürlich passiert bisher nur noch nichts, weil das Plugin ja leer ist.

Versionieren mit Git

An dieser Stelle möchte ich Euch einmal ans Herz legen, dass Ihr Eure Arbeit am Plugin mit git versionieren solltet. Vor allem während der Plugin-Entwicklung kann es hilfreich sein, weil wir unsere Zwischenstände speichern und damit immer wieder auf den Code alter Versionen zugreifen können, falls wir etwas kaputt machen sollten. Ich habe bisher immer mit gitlab und Sourcetree (beides kostenlos) gearbeitet und bin vollkommen zufrieden.

Bis zum nächsten Mal

Das war's auch schon im ersten Teil dieser Reihe! Im nächsten Teil bauen wir zusammen die erste der beiden Funktionen auf. Dabei zeige ich Euch, wie man einen Cronjob über ein Plugin erstellt, einen Subscriber für den Cronjob einrichtet und seinen eigenen Code ausführen lässt. Ich hoffe, Ihr seid wieder dabei!


Weitere Links

2 Kommentare

  • Where is the code for this plugin ?
  • Hey John,

    you can find the current version of the plugin in part two of our blog-series: https://www.8mylez.com/blog/plugin-tutorial-teil-2/

    Note that we are not finished yet with our blog-series and the current version does not have all features we discussed in part one.

    Greetings,
    Daniel

Was denkst du?

Beliebt

Was du über die Shopware 5 Theme Struktur wissen musst und wie du ein eigenes Template erstellst
Social Media Icon mit Link im Footer
Shopware Theme: Eigenes Listing Layout erstellen
Logo Größe mit Less für Shopware 5 anpassen
Die größten Fehler bei der Entwicklung eines Shopware 5 Themes

Sicher Dir die besten Shopware 6
Tipps & Tricks

Trag Dich ein und Du erhältst unser Shopware 6 Whitepaper kostenlos!
Trag dich für unseren Newsletter an, im Anschluss erhältst Du das Whitepaper. 

Mit dem Abschicken Deiner Daten akzeptierst Du unsere Datenschutzerklärung.

Entdecke unsere ebooks

Unsere Standorte

Zentrale 

Technologiepark 23
33100 Paderborn


Leipzig
Bernhardstraße 34
04315 Leipzig

Kontakt

Über 8mylez

✓ 38 Mitarbeiter

✓ Shopware Gold Partner

✓ 40.000+ Plugin Downloads

✓ 160+ betreute Shops

✓ Full-Service Shopware Agentur

✓ 70 Shopware Videos auf Youtube

✓ Alle Shopware Zertifizierungen

Social


Unsere Partner
© 2023 by 8mylez GmbH //  Impressum + Datenschutz