Abwärtskompatibilität zum neuen Plugin-System ab 5.2

Hallo liebe Shopware-Gemeinde, liebes Shopware-Team,

ich hatte heute mal probiert ein neues Plugin in den Store zu schieben. Leider funktionierte das nicht mehr, weil die Vorprüfung rummeckerte, das der Code nicht konform zu den Belangen des neuen Plugin-Systems >= 5.2 ist.

Heißt es nun, dass nun mehr nur noch Plugins im 5.2er Stil im Store akzeptiert werden? Und wenn ja, wie verhält sich das denn zu den Versionen <5.2?

Ich habe probiert die 5.2er beim Hochladen explizit auszuklammern, und nur die Versionen bis 5.16 aktiviert. Er meckert aber wieder mit gleichen Fehlermeldungen.

Wäre vielleicht mal nicht schlecht irgendwo zu beschreiben, wie man weiter abwärtskompatibel bleibt.

VG

Frank

Hallo Frank,

wie sieht denn die Ordnerstruktur mit Dateinamen deines ZIP Files aus?

Viele Grüße aus Schöppingen

cool Michael Telgmann

Hallo Michael,

also ich hab mehreres probiert… zunächst der Standard:

frontend(Ordner)

  • MeinPlugin(Ordner)

…dann

MeinPlugin(Ordner)

  • Hier meckert er aber, dass das Bootstrapping-File fehlt. Benenne ich es um, in MeinPlugin.php meckert er, dass das Plugin nicht der Anforderung für das neue Plugin-System entspricht (klar, ist ja auch nicht nach den Anforderungen des neuen Plugin-System geschrieben worden).

Also, wie soll das jetzt aussehen, damit ein Plugin für die 5.2x, aber auch abwärtskompatibel bleibt?

Danke für Deine Hilfe vorab.

VG

Frank
 

Hi Frank,

du kannst ein Plugin ganz normal nach dem “alten” System bauen. Dieses Plugin wird auch unter 5.2 funktionieren. Mit dem neuen Pluginsystem ist das legacay Pluginssystem nicht automatisch direkt ersetzt. Vielmehr laufen die Systeme parallel und man kann beide ohne Einschränkungen gleichzeitig nutzen. Falls du also ein Plugin schreiben möchtests, das sowohl unter 5.1.6 als auch unter 5.2.x laufen soll, dann benutze einfach das legacy System. 

Viele Grüße aus Schöppingen

cool Michael Telgmann

Hallo Michael,

Legacy heißt ja, die Ordnerstruktur „frontend/MeinPlugin/“ sollte funktionieren, ja? Das klappt aber nicht, die Vorprüfung meckert mit folgender Fehlermeldung:

Version XXX: Automatic code review failed.
No bootstrapping file found. Expecting bootstrapping in XXX/XXX.php
new plugin system is only available for shopware >= 5.2
No bootstrapping file found. Expecting bootstrapping in XXX/XXX.php

Damit wir uns korrekt verstehen, es geht um die Veröffentlichung bei euch im „Store“. Innerhalb der Entwicklung (lokal) hatte ich keine Probleme. Sondern die Vorprüfung im Account von Shopware, nach Klick auf „Freigabe“.

Verstehst Du mich korrekt?

VG

Frank

Hallo,

Nein, das korrekte Verzeichnis lautet:
/engine/Shopware/plugins/Local/Core/

Wobei Du Local und Core nach Deinen Ansprüchen adaptieren kannst. Ist allerdings rein zwecks Struktur und hat keine Auswirkung auf die Funktion.

Hi,

sehr merkwürdig. Seit wann ist das so? Das hat vorher immer anders funktioniert, im Ansatz ab “/frontend”. Ist ja nicht das erste Plugin im Store von mir.

VG

Hi Frank,

legacy hat erstmal nicht direkt etwas mti der Orderstrukur zu tun. Wichtig ist vorallem der Aufbau der Dateien und die Benammung der Klassen. 

Ein kleines Beispiel findest du hier: Plugin quick Startup Guide

Hier noch mal zur Verdeutlichung

Ordner neues System: MeinPlugin/MeinPlugin.php

namespace MeinPlugin;

class MeinPlugin extends Plugin
{
}

 

Ordner legacy System: Frontend/MeinPlugin/Bootstrap.php

class Shopware_Plugins_Frontend_MeinPlugin_Bootstrap extends Shopware_Components_Plugin_Bootstrap
{
}

Viele Grüße aus Schöppingen

cool Michael Telgmann

Hey Michael,

das wars nicht, was ich meine. Mir sind die Klassen-Unterschiede innerhalb der Bootstrap schon klar (ich hab die Doku gelesen). Aber die Veröffentlichung bzw. Freigabe klappt trotzdem nicht (Legacy-System).

Selbst, wenn ich den Pfad jetzt komplett so in der “Zip” setze, wie von Synonymous vorgeschlagen, bekomme ich nach “Freigabe” immer noch den zuvor beschriebenen Fehler im Status meine Shopware-Accountes.

Whats wrong?

VG

Frank

 

 

 

Hallo Frank,

bitte gib uns einmal die konkrete Fehlermeldung ohne XXX/XXX. Darin sollte eigentlich stehen, was ihm genau fehlt und wo er gesucht hat. Wir können den Pluginnamen ggfs. nachträglich im ForumsPost entfernen, falls du nicht möchtest das dieser indiziert wird, aber ohne genaue Fehlermeldung wird es schwierig hier eine Antwort zu finden.

 

Viele Grüße
Marc

Hi Marc, ich hab Dir ne PN geschrieben. VG

@snapdragon schrieb:

Legacy heißt ja, die Ordnerstruktur “frontend/MeinPlugin/” sollte funktionieren, ja? Das klappt aber nicht, die Vorprüfung meckert mit folgender Fehlermeldung:

Ist das f in Frontend wirklich klein? Ggf. ist das schon dein Problem? 

Hi Thomas,

Nein, das ist nicht wirklich klein. Wobei es bei anderen Plugins auch nicht das Problem war (ich hab schon Plugins mit kleinem F hochgeladen und keine Fehlermeldung bekommen). Hab mehrfach alle Varianten mal getestet.

Danke aber für Dein Interesse.

VG

Frank

 

Kannst Du mir das hier: 

No bootstrapping file found. Expecting bootstrapping in XXX/XXX.php 

Unzensiert schicken/posten?

@Thomas schrieb:

Kannst Du mir das hier: 

No bootstrapping file found. Expecting bootstrapping in XXX/XXX.php

Genau dort liegt der Fehler:
Das alte Pluginsystem erwartet ein SwagRandomPlugin/Bootstrap.php, dies findet er nicht, weil du SwagRandomPlugin/SwagRandomPlugin.php als Dateipfad gewählt hast. Dann können wir nicht weiter prüfen und der Pluginmanager würde beim installieren an genau dieser Stelle auch scheitern

Sorry, ich habe in meinem Zip eine SwagRandomPlugin/Bootstrap.php …

weil du SwagRandomPlugin/SwagRandomPlugin.php als Dateipfad

Wo bitte wähle ich denn den Dateipfad? In den Plugin-Einstellungen im Shopware-Account?

Nochmal, ich habe ganz eindeutig in meinem Zip-File (innerhalb der lokalen Entwicklung funktioniert das Plugin ohne Probleme, auch mit externer hochgeladener Installation), folgende Pfad

/frontend (Ordner)
-/SwagRandomPlugin (Ordner)
-/Bootstrap.php

Müsste ich die Bootstrap.php jetzt umbenennen? Ich steh hier irgendwie auf dem Schlauch.

Danke trotzdem.

 

 

 

Hi Frank,

die Bootstrap.php muss in dem Ordner SwagRandomPlugin liegen.

Also dein Zip muss so aussehen:

<test.zip>/Frontend/SwagRandomPlugin/Bootstrap.php</test.zip>

Viele Grüße aus Schöppingen

cool Michael Telgmann

Hi Michael,

genauso sieht das aus. Bin ratlos.

Frank

@Michael Telgmann schrieb:

Also dein Zip muss so aussehen:

/Frontend/SwagRandomPlugin/Bootstrap.php

@snapdragon schrieb:

genauso sieht das aus. Bin ratlos.

Nö, bei Dir sieht die letzte Version des Zips vom Plugins (1.0.0) so aus:

/engine/Shopware/Plugins/Local/Frontend/SwagRandomPlugin/Bootstrap.php

Wenn du das anpasst auf

Frontend/SwagRandomPlugin/Bootstrap.php

sollte das funktionieren. Darüber hinaus hast Du auch ein plugin.xml im Zip die im alten System keine Wirkung hat und Du deshalb entfernen solltest.

 

Viele Grüße aus Schöppingen
Marc

Hi Marc,

ich fass es nicht, es funktioniert jetzt!!! Gebt es zu, ihr habt bestimmt über Nacht an der Plugin-Funktion im Store gefrickelt!!! :slight_smile: :slight_smile: :slight_smile:

Ich schwöre, ich habe genau diesen Pfad gestern so im Zip gehabt. Ich habe es ja 1:1 aus meiner Entwicklungsumgebung so kopiert, wie alle anderen Plugins vorher auch. Und es ging nicht…

Naja, egal. Ich bedanke mich dennoch für die diesmal schnelle Hilfe im Forum!

VG

Frank