Quality Guidelines für Plugins im Shopware Community Store

Version

5.5.0 oder neuer

Inhaltsverzeichnis

SW5 Plugins - Qualität Richtlinien für Community Store Plugins

plugin.xml - Plugin-Metadaten

Folgende Plugin-Metadaten sind Pflicht:


<?xml version="1.0" encoding="utf-8"?>
<plugin xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../engine/Shopware/Components/Plugin/schema/plugin.xsd">
<label>My Pluginname</label>
<label lang="de">Mein Pluginname</label>
<version>1.0.0</version>
<copyright>Herstellername</copyright>
<license>In den Stammdaten hinterlegte Lizenz</license>
<link>optional</link>
<author>Author des Plugins – Firmenname oder Name des Programmierer</author>
<compatibility minVersion="5.2.0" />
<changelog version="1.0.0">
   <changes>
        <![CDATA[
        First release Shopware Community Store
        ]]>
   </changes>
   <changes lang="de">
        <![CDATA[
        Erstveröffentlichung Shopware Community Store
        ]]>
   </changes>
</changelog>
<description>
   <![CDATA[
   <b>My Plugin</b>
   <p>CSS,INLINE-Styles,BASE64-IMAGES OR SCRIPTS NOT ALLOWED! Describes Plugin and contains a Link to manual/description in the community-store: <a href="https://store.shopware.com/search?sSearch=TechnicalPluginName">Plugin Manual</a></p>
   ]]>
</description>
<description lang="de">
   <![CDATA[
   <b>Mein Plugin</b>
   <p>CSS,INLINE-Styles,BASE64-IMAGES NICHT ERLAUBT! Beschreibt Plugin und enthält einen Link zur Anleitung/Beschreibung im Community Store: <a href="https://store.shopware.com/search?sSearch=TechnischerPluginName">Plugin Anleitung</a></p>
   ]]>
</description>
</plugin>

Hinweise: Die changelog muss 20 Zeichen haben. Bitte beachte, dass minVersion gleich der Version sein muss, welche Du für das Plugin in Deinem Account hinterlegt hast.

plugin.xml - Plugin-Abhängigkeiten

Sollte Dein Plugin abhängig von anderen Plugin sein, so muss diese Abhängigkeit in der plugin.xml hinterlegt sein. Beispiel: Dein Plugin läuft nur dann, wenn ein Basis-Plugin aktiv ist, so muss in der plugin.xml das Basis-Plugin abgefragt werden:


    <requiredPlugins>
        <requiredPlugin pluginName="BasisPlugin" minVersion="1.0.0" />
    </requiredPlugin>     

Übersetzungen (xml, tpl etc.)

Sofern in der Pluginbeschreibung im Account 2 die Option „Mein Plugin ist in folgenden Sprachen übersetzt“ mehr als eine Sprache aufweist (z.B. Deutsch und Englisch) so müssen die Übersetzungen in den jeweiligen xml- und tpl-Dateien (Textbausteine).

Gültiges Plugin-Icon für das Shopware Backend

Es muss eine gültiges Icon in der Größe 16x16 für das Plugin mit hochgeladen werden. Das Plugin-Icon muss nach Installation im Plugin-Manager im Backend auftauchen.

Fehler müssen in den plugin-Log geschrieben werden.

Die Fehler- und Hinweismeldungen des Plugins dürfen nur in das Plugin-Logfile in dem Log-Ordner von Shopware ( /var/log/ ) geschrieben werden. Hierfür muss der Service "pluginlogger" aus dem DI-Container genutzt werden. Seit Shopware 5.6 können auch eigene Plugin-spezifische Logger erstellt werden. Es dürfen niemals Plugin-Exceptions in den Shopware core.log oder außerhalb des Shopware-Log-Ordner geschrieben werden. Somit ist gesichert, dass das Logfile niemals per URL aufrufbar ist.
Fehlermeldungen des Plugins müssen im System-Log von Shopware auftauchen.
Codebeispiel aus der Shopware Developer-Dokumentation.

Änderungen der Datenbank und Datensätze dürfen bei "Neu installieren" nicht entfernt werden.

Bei Klick auf "Neu Installieren" dürfen die Daten des Plugins nicht gelöscht werden.

Bei "Installieren/Deinstallieren" muss der Shopbetreiber entscheiden, ob die Daten/Tabellen mit gelöscht werden sollen oder nicht.

Wenn man im Plugin-Manager auf "Installieren / Deinstallieren" geklickt wird, so muss dem Shop-Betreiber die Optionen angeboten werden, die Plugin-Daten und Tabellen-Anpassungen komplett zu löschen oder zu behalten.
Codebeispiel aus der Shopware Developer-Dokumentation.

Standard-Präfix für eigenen Datenbank-Tabellen

Das Präfix für eigenen Datenbanktabellen lautet s_plugin_. Wenn Du eigenen Tabellen nutzt, so sollte der Aufbau folgendermaßen lauten: s_plugin_mein_plugin_name

E-Mail-Vorlagen

Eigene E-Mail-Vorlagen müssen in den Vorlagen-Ordner "Benutzer-E-Mails" gespeichert und nach Deinstallation auch wieder gelöscht werden.
Codebeispiel aus der Shopware Developer-Dokumentation.

Plugins die mit externen APIs kommunizieren

Sofern in Deinem Plugin Zugangsdaten zu anderen Schnittstellen hinterlegt sind, so empfehlen wir einen Test-Button zur Verfügung zu stellen. Somit bekommt der Shopbetreiber von der Schnittstellen-API sofort eine aussagekräftige Meldung, ob seine im Plugin hinterlegten Zugangsdaten korrekt sind oder nicht. Das Ergebnis muss in den Shopware-Log geschrieben werden.

Codebeispiel aus der Shopware Developer-Dokumentation.

Nachladen von Dateien nicht erlaubt

Das Plugin darf während und nach der Installation im Plugin-Manager keine weiteren Dateien mehr nachladen.

Plugin-Seiten mit eigener Url müssen in der sitemap.xml auftauchen.

Wenn das Plugin eigene Seiten bereitstellt, diese auf index,follow gesetzt und die Urls über das Frontend erreichbar sind, so müssen diese "Plugin Url`s" auch in der sitemap.xml auftauchen. Zu dem müssen diese Seiten eine eigene "Meta Description" besitzen, welche indidivduelle über das Backend gesetzt werden muss.
Codebeispiel aus der Shopware Developer-Dokumentation.

Codereview - Fehlermeldungen

See Code review - Errors: https://docs.shopware.com/en/plugin-standard-for-community-store#code-review-errors.

Wie wir Plugins testen

So kannst Du Deine Freigabe unterstützen und Deine Plugins schnell im Shopware Community Store veröffentlichen.

Erste Sichtung des Plugins

  • Das Plugin wird zuerst php7.2, Shopware 5.5. und aktiviertem sowie aktuellen Shopware Sicherheits- Plugin und mit der aktuellen Shopware-Version ohne Sicherheitsplugin getestet.Nach erfolgreichem Test erfolgt ein nochmaliger Test mit der aktuellen Shopware Version und ohne aktivierten Sicherheitsplugin. Die Shopware Installation befindet sich in einem Unterordner und besitzt einen Sprachsubshop mit virtueller URL so wie einen eingenständigen Subsshop mit eigener URL, welcher auch in einem Unterordner liegt.
  • Funktions-Vergleich mit anderen Plugins, die es bereits im Shopware Community Store gibt. Sofern es ein Plugin mit exakt der gleichen Funktion gibt, kann das Plugin ggf. abgelehnt werden.
  • Als Browser nutzen wir zum Testen den aktuellen Chrome
  • Neue Plugins, welche mit >=SW5.5 kompatibel sein sollen, müssen mit der neuen Plugin-Struktur entwickelt worden sein. Beachte hierzu auch folgenden Hinweis der Shopware-Entwickler.
 

Plugin im Test

  • Das Plugin darf keinerlei Dateien nach der Installation an dem Shopware-Codereview vorbei nachladen. Dies ist nur mit einer Genehmigung seitens shopware erlaubt und muss entsprechend im Quellcode kommentiert werden. Die Genehmigung durch shopware passiert automatisch in der Plugin-Prüfung.
  • Das Plugin muss in allen möglichen Shop-Konfigurationen fehlerfrei funktionieren.
  • Nach der Installation wird getestet, ob das Plugin ohne manuelles Leeren des Caches und Neuladen des Backends sichtbar, aktiv ist und funktioniert. Hierauf muss ansonsten durch eine Growl-Message im Backend aufmerksam gemacht werden.

Codereview

  • Prüfen auf shell-Scripte *.sh etc.
  • Prüfung auf wget, git, ftp, npm & curl (Nachladen von Dateien/Bilbiotheken ist nur in Ausnahmefällen und nach Rücksprache mit shopware erlaubt)
  • Prüfung auf fremde Lizenzabfragen (andere Lizenzprüfung bedarfen ausdrücklicher Zustimmung)
  • wird das Log bzw. der Log-Ordner von Shopware genutzt (Service "pluginlogger")
  • Sofern das Plugin eigene Tabellen angelegt hat, so müssen diese mit Typ innoDB und Kollation utf8_unicode_ci angelegt werden.

Codereview plugin.xml

  • Alle Pflicht-Metadaten-Felder sind vorhanden
  • Englische Übersetzungen in den englischen Tags vorhanden
  • License-Tag ist korrekt gesetzt (vergleichen mit Account)
  • „minVersion“ richtig gesetzt? (vergleichen mit Account)
  • Sofern das Plugin andere Plugins benötigt, so müssen diese mit requiredPluign in der plugin.xml abgefragt werden: z.B. requiredPlugin pluginName="Cron"

Frontend-Plugins

  • Mit Google Rich-Snippet-Tester kontrollieren, inwiefern es neue Warnungen/Fehler gibt. Es darf keine neuen Warnungen/Fehler geben. Gilt für Listing und Detailseiten (Test mit nicht lieferbaren Artikel, Artikel lieferbar + Bewertung, Artikel mit Verkaufsdatum in der Zukunft und normal lieferbare Artikel). Testing-Tool: Google Structured Data Testing Tool
  • Wir prüfen mit der Debug-Konsole das Frontend und den Checkout - auch achten wir auf neue Java-Fehler. Es dürfen in der Debug-Konsole nicht mehr Script-Fehler auftauchen, als vor der Installation des Plugins.

Plugin-Manager

  • Mit der Debug-Konsole wird die Neu-Installation, Deinstallation, Installation und Löschen des Plugins sowie erneute Installation kontrolliert. Es dürfen keine 400er Fehler/Exceptions erscheinen.
  • Nach dem Löschen des Plugins wird überprüft, ob das Plugin mögliche Datenbank-Anpassungen wieder entfernt hat.
  • Sofern das Plugin spezielle php-Optionen benötigt, so müssen diese bei der Installation abgefragt werden. Bei negativer Abfrage muss eine Hinweismeldung im Backend erscheinen.

Einkaufswelten

  • Einkaufswelten–Elemente müssen ein Element-Icon besitzen.
  • Die Einkaufswelten müssen nach dem Löschen eines Pluigns mit EKW-Elementen immer noch fehlerfrei im Frontend ausgeliefert werden.

Zahlung

  • Es wird geprüft ob für debug/error.log der Service "pluginlogger" genutzt wird und logs in das Verzeichnis /var/log/ geschrieben werden. Logfiles dürfen unter keinen Umständen in anderen Verzeichnissen gespeichert werden. 
  • Codebeispiel aus der Shopware Developer-Dokumentation.

Schnittstellen Plugins

Template Tests

  • plugin.xml: alle Pflicht-Metadaten-Felder sind vorhanden
  • plugin.xml: englische Übersetzungen in den englischen Tags gepflegt
  • plugin.xml: License-Tag richtig gesetzt (Vergleich mit dem Account)
  • plugin.xml: minVersion richtig gesetzt (Vergleich mit dem Account)
  • Rich-Snippets testen inwiefern es neue Fehler gibt - Testen der Artikel in der Kategorie und die Kategorie selber: https://search.google.com/structured-data/testing-tool/u/0/?hl=de

Beschreibung im Account prüfen

  • Plugin Kurzbeschreibung hat mindestens. 160 Zeichen
  • Plugin-Beschreibung muss mindestens 200 Zeichen lang sein und beschreibt das Plugin und die Funktionen detailliert.
  • Ausreichen Screenshots aus dem Front- und Backend. Diese müssen das Plugin in "Action" zeigen und wie es konfiguriert wird.
  • Kategoriezuweisungen korrekt zugeordnet
  • Demoshop-Link ist valide. In der URL darf sich kein http: bzw. https: befinden.
  • Englische Beschreibung muss 1:1 aus dem Deutschen übersetzt werden (sofern das Plugin im englischen Store auftaucht).
  • Plugin-Herstellerprofil ist in englisch und deutsche angelegt sowie ein Hersteller-Logo ist vorhanden.

Automatisierte Tests

Auf Github gibt es Cypress-Tests für Shopware. Das Projekt wird von FirendsOfShopware vorangetrieben.
Du kannst jederzeit committen und verbessern:
Cypress Tests für Shopware 5
Developer Doku Cypress Tests für Shopware 6 und Cypress Tests für Shopware 6 auf Github

Account

Hinweis: Der Quellcode der Beschreibungen, Profile und Anleitungen darf keine iframes, externe Scripte oder Trackingpixel enthalten. Eigene styles dürfen die original Shopware Styles nicht überschreiben. Externe Quellen müssen via https eingebunden werden.

Plugins Stammdaten

Bitte wähle eine gültige Lizenz. Diese musst Du auch in der plugin.xml ausweisen.

Beschreibung & Bilder

Kurzbeschreibung: Mindestanzahl von 150 und maximal 185 Zeichen. Die Kurzbeschreibung wird auch als Meta-Description veröffentlich. Diese sollte minimal 155 Zeichen lang und unique sein.

Beschreibung: Mindestanzahl von 200 Zeichen bei der Beschreibung. Diese muss aussagekräftig und erklärend sein.

Die Ausgabe von Inline-Styles wird automatisch unterbunden. Erlaubt sind folgende html-Tags:


<p> <br> <strong> <b> <ul> <ol> <li> <i> <a> <h2> <h3> <h4> <h5>

Wir erwarten eine ausführliche und verständliche Plugin-Beschreibung mit einem sauberen HTML-Quellcode. Diese sollte, wenn möglich, für nicht technisch versierte Personen verständlich sein. Erkläre Schritt für Schritt wie dein Plugin funktioniert und wie es benutzt werden muss um zu dem gewünschten Ergebnis zu kommen.

Zudem sollte mindestens ein Bild die Plugin-Funktion im Backend oder Frontend zeigen. 

Hinweis: In den Plugin-Beschreibung, bei den Plugin-Bildern und im Hersteller-Profil darf nicht mehr mit eigenen Shopware Zertifikaten geworben werden. Die Hersteller-/Partner-Zertifikate werden am Ende jeder Plugin-Beschreibung dynamisch ausgelesen und von uns veröffentlicht.

Erreichbar im internationalen Store

Wenn ein Plugin für den internationalen Store freigeschaltet werden soll, müssen folgende Felder 1:1 ins Englische übersetzt sein:

  • Kurzbeschreibung
  • Beschreibung
  • Installationsanleitung (optional)

Herstellerprofil

Ein aussagekräftiges Hersteller-Profil in deutscher und englischer Sprache ist Pflicht.

Die englischen bzw. deutschen Texte müssen 1:1 übersetzt sein. Das Herstellerprofil findest Du in Deinem Account unter Shopware Account > Pluginverwaltung > Herstellerprofil.

Hinweis auf STP-Vertrag bei Schnittstellen

Du hast nun alle Voraussetzungen durchgelesen um Plugins für den Shopware Community Store zu entwickeln und bereit zu stellen.

Sofern es sich bei Deinem Plugin um eine Softwareerweiterung/Schnittstelle mit nachgelagerten Kosten / Transaktionsgebühren / Service Fees für den Kunden handelt, benötigst Du, zur Freischaltung Deiner Plugins, unseren Technologie-Partnervertrag.

Wir beraten Dich hierzu gerne! Melde dich bei Rückfragen zum Technologie-Partnervertrag bei unserem Sales-Team unter:

Tel.: +49 (0) 25 55 / 928 85-0 oder per Mail sales@shopware.com

War dieser Artikel hilfreich?