sw52 neue Pluginstruktur

Seit Shopware 5.2 gibt es ja die neue Plugin-Struktur und auch einen neuen Speicherort /custom/plugins/

Ich wollte jetzt ein plugin umbauen und stoße nur auf Stolpersteine. Jetzt wundert mich auch nicht mehr das man kein Shopware-Plugin dort findet. Es fängt schon beim einfachsten, den Informationen an.

Hier bin ich total verwirrt was Swag da tatsächlich will plugin.xml oder plugin.json

Es scheint als soll jetzt in plugin.xml gespeichert werden, die Funktion getInfo wird nicht mehr aufgerufen.

Derzeit nicht zu empfehlen, weil:

  • xml ist aufgebläht, unleserlich und unflexibel
  • unflexibel weil nicht auf  Fehler und unzulänglichkeiten reagiert werden kann.
  • description nur als Fließtext
  • changelog funktioniert überhaupt nicht

Um nicht nur zu meckern, hier meine Vorschläge:

  • begrabt, dieses XML-gedöns, lieber weiterhin plugin.json, wenn XML dann:
  • defaultLang einstellbar, derzeit fest auf „en“
  • stellt eure Standardplugins auf das neue System um.
  • description als MarkDown
  • description alternativ als Import, z.B. readme_de.txt
  • changelog funktionsfähig

Wenn ihr eure neue Pluginstruktur propagiert, solltet ihr eure Standardplugins auf das neue System umstellen, damit ihr die Unzulänglichkeiten bemerkt und wir Beispiele haben, an denen wir uns orientieren können. Also stellt doch mal SwagImportExport um!

IMHO finde ich den eingeschlagenen Weg mit den XML-Dateien falsch, da nicht auf Unzulänglichkeiten reagiert werden kann bzw höchst umständlich.

Ich hätte ja auch schon umgestellt, aber leider gibt es noch zu viele offene Fragen die weder in Beschreibungen stehen, noch hier im Forum beantwortet wurden.

Was für -konkrete- Fragen habt ihr denn?! Noch ein Beispiel aus den Shopware Labs: GitHub - shopwareLabs/SwagBackendOrder: plugin which allows you to create orders via backend module

Viele Grüße
https://www.digitvision.de

Das Beispiel ist leider nur für Backend. Ich habe einige Frontend-Plugins (alle im Store) die ich mal umstellen wollte. Aber zu viele Kleinigkeiten die aus den vielen Beispieln nicht ersichtlich sind. Aber solange Shopware selber seine Plugins nicht konsequent umstellt, kann ich damit ja auch noch warten.

Also doch keine konkreten Fragen?! Dann kann man auch nicht helfen.

Viele Grüße
https://www.digitvision.de

Konkrete Fragen? Ja, leider ohne Ende.
* Gibt es ein funktionsfähiges Live-/Beispielplugin das man nach /custom/plugins/ schiebt und funktioniert? Dieses auch die Plugininformationen wie Pluginbeschreibung, Changelog etc mit ein.
* Pluginbeschreibung mit formatierten (MarkDown) Text angezeigt wird?
* Changelog angezeigt wird
* welches Format soll in Zukunft genutzt werden plugin.xml oder plugin.json
* wie steht ihr zu plugin.xml / plugin.json

Das Beispiel Attribute system
Nach dem entpacken hat man den Ordner Frontend, ist unter /custom/plugins/ Quatsch und an der alten Stelle funktioniert das Plugin nicht, weil nach neuer Struktur erstellt.
Packt man den Unterordner SwagAttribute nach /custom/plugins/ funktioniert es, aber auch hier keine plugin.(xml|json)

Gibt es ein funktionsfähiges Live-/Beispielplugin das man nach /custom/plugins/ schiebt und funktioniert? Dieses auch die Plugininformationen wie Pluginbeschreibung, Changelog etc mit ein.

Siehe: GitHub - shopware5/SwagBackendOrder: plugin which allows you to create orders via backend module

Pluginbeschreibung mit formatierten (MarkDown) Text angezeigt wird?

Ok - da muss ich auch passen.

welches Format soll in Zukunft genutzt werden plugin.xml oder plugin.json

Siehe https://developers.shopware.com/developers-guide/plugin-system/#plugin-metadata

wie steht ihr zu plugin.xml / plugin.json

Shopware nutzt in den eigenen, aktuellen Plugins eine plugin.json, um dort alle Infos abzulegen. Die plugin.json wird dabei in der Bootstrap.php ausgelesen. Im neuen Plugin System bedarf es klarer Strukturen, damit diese Infos automatisiert ausgelesen werden können. Daher wird alles in der plugin.xml hinterlegt. Bitte ignoriere einfach die plugin.json aus den Shopware Plugins.

Packt man den Unterordner SwagAttribute nach /custom/plugins/ funktioniert es, aber auch hier keine plugin.(xml|json)

Da hat wohl bei Shopware jemand geschlafen…
1.) Der Ordner „Frontend“ ist falsch
2.) Das Plugin ist nur ein Beispiel und nicht vollständig

Viele Grüße
https://www.digitvision.de

@Sandy schrieb:
* Pluginbeschreibung mit formatierten (MarkDown) Text angezeigt wird?

Versuch doch mal HTML in der XML Datei zu verwenden. Diese musst du in einen CDATA Abschnitt einbetten. Siehe Wikipedia: https://de.wikipedia.org/wiki/CDATA 

Fragen noch viele. Die Doku ist äußerst Lückenhaft und selbst mit dem Shopware Handbuch bleiben zu viele Dinge ungeklärt. Auch hilft einem das Shopware PHPStorm Plugin nicht wirklich und nen boilerplate generator gibts in den cli tools (anscheinend) auch nicht :confused: Zur Zeit heißt es die spärlich zusammengekratzen Infos aus Doku, Handbuch, Fremd-Plugins zusammensuchen und hoffen xD

Wo finde ich eine komplette Liste welche objekte über den DI verfügbar sind?

@arnebecker schrieb:

@Sandy schrieb:
* Pluginbeschreibung mit formatierten (MarkDown) Text angezeigt wird?

Versuch doch mal HTML in der XML Datei zu verwenden. Diese musst du in einen CDATA Abschnitt einbetten. Siehe Wikipedia: https://de.wikipedia.org/wiki/CDATA 

Sorry, das wäre nur eine Notlösung und mit sowas möchte ich nicht anfangen.

Beim oben als Beispiel gebrachten SwagBackendOrder, funktioniert changelog in der plugin.xml und die Beschreibung über README.md .

Super denke ich mir…  nur mache ich das gleiche bei mir… nothing. Die komplette plugin.xml und README.md übernommen… nicht das gleiche Ergebnis.

WTF bei Shopware läuft man ständig gegen die Wand und fühlt sich verarscht. Na mal schauen ob ich raus bekomme wieso ich bei mir nicht das gleiche Ergebnis erhalte.

@langnickel schrieb:

Wo finde ich eine komplette Liste welche objekte über den DI verfügbar sind?

Eine Liste existiert nicht. Es gibt aber verteilt ein paar .xml Dateien (zb in den Bundles), die ein paar services zeigen - zb https://github.com/shopware/shopware/blob/5.2/engine/Shopware/Components/DependencyInjection/services.xml
Alternativ kann da definitiv auch das PHPStorm Plugin helfen.

Viele Grüße
https://www.digitvision.de

@Sandy schrieb:

Sorry, das wäre nur eine Notlösung und mit sowas möchte ich nicht anfangen.

Wirst du aber müssen, wenn du das neue Plugin System verwenden möchtest.
Die readme.md ist nur für github.

Viele Grüße
https://www.digitvision.de

@Aquatuning GmbH schrieb:

@langnickel schrieb:

Wo finde ich eine komplette Liste welche objekte über den DI verfügbar sind?

Eine Liste existiert nicht. Es gibt aber verteilt ein paar .xml Dateien (zb in den Bundles), die ein paar services zeigen - zb https://github.com/shopware/shopware/blob/5.2/engine/Shopware/Components/DependencyInjection/services.xml
Alternativ kann da definitiv auch das PHPStorm Plugin helfen.

Viele Grüße

 Danke, ist imemrhin ein Anfang. Vielleicht kann man die XML auch in die Doku mit hinschreiben https://developers.shopware.com/developers-guide/plugin-system/#access-to-the-di-container

 

Das PHPStorm Plugin funktioniert bei mir so gut wie nie. Zumindest nicht was Vorschläge angeht. Das einzige was Wirklich bis jetzt zuverlässig (und vor allem vollständig!) funktioniert sind die Event Namen. 

Wenn du auf einen service zugreifen willst, dann kennst du ihn ja bereits und weißt i.d.R. auch, wo er üblicherweise eingesetzt wird. Dann muss man evtl. ein wenig im Quellcode wühlen - aber es sollte kein Problem sein, den Namen zu finden.

Viele Grüße
https://www.digitvision.de

@Aquatuning GmbH schrieb:

@Sandy schrieb:

Sorry, das wäre nur eine Notlösung und mit sowas möchte ich nicht anfangen.

Wirst du aber müssen, wenn du das neue Plugin System verwenden möchtest.
Die readme.md ist nur für github.

Viele Grüße

Das ist doch Bockmist. Das Beispielplugin SwagBackendOrder ist für meine Fragen auch ungeeignet, da es die README.md und plugin.xml ignoriert.

Somit bleibe ich bei meinen Behauptungen:

  • changelog funktioniert nicht
  • description ist mit der Beschränkung auf Fließtext murks
  • plugin.xml ist als Beschreibungscontainer ungeeignet
  • das entfernen der Funktion getInfo(), um die XML-Unzulänglichkeiten zu korrigieren, ist auch nicht hilfreich.

 

Das mit CDATA funktioniert, hier mal meine Beispiel plugin.xml

    Mein Beispiel
    My Example
    1.1.0
    MIT
    Jane Doe
    (c) by EXAMPLE
    http://www.EXAMPLE.de/

    Meine Pluginbeschreibung

Nur als Beispiel für die neue Shopware 5.2 Pluginstruktur und die plugin.xml
IMHO

	changelog funktioniert nicht
	description ist mit der Beschränkung auf Fließtext murks. Ok, mit CDATA kann man arbeiten.
	plugin.xml empfinde ich als Beschreibungscontainer ungeeignet
	das entfernen der Funktion getInfo(), um die XML-Unzulänglichkeiten zu korrigieren, ist auch nicht hilfreich.

]]>

    

    
        first release
        erste Ausgabe
    
    
    
        Changelog not (yet) supported
        Changelog wird (noch) nicht unterstützt

 

Das ist doch schonmal super, dass es über CDATA in der XML funktioniert.

Der Chancelog wird IHMO nur angezeigt, wenn das Plugin auch im Comunity Store verfügbar ist. Bei lokalen Plugins wird der nicht ausgewertet. Außerdem gibt es zwei Beschreibungen. Einmal die aus der XML und einmal die Beschreibung aus dem Community Store. Der Reiter “Beschreibung” kommt aus dem Store. Der Reiter “Pluginbeschreibung” aus der XML.

Die Changelog wird noch nicht benutzt. Die Grundidee dahinter war es, dass später diese im Store Automatisch benutzt wird :slight_smile:

Du kannst ja noch bis Shopware 6 oder so das alte System nutzen, wenn du es nicht magst. Aber sobald du ein Plugin mit den neuen Umgesetzt hast und das Prinzip dahinter verstanden hast. Wirst du nur noch das neue benutzen wollen, da es so extrem viel Arbeit abnimmt und du Systemnah arbeiten kannst, dank den Container…