Doku zum neuen Plugin System

Hallo,

ich steige gerade in das Entwickeln von Shopware Plugins ein und versuche mich gerade durch die Dokus zu schlagen. Mein Problem dabei ist, dass ich gern das neue 5.2 System verwenden möchte, da ich aus einer Symfony Welt komme und ich das gefühl habe, dass die Plugins für den Custom Ordner mit der abstract class Plugin aus dem Shopware\Components Namespace näher an Symfony dran ist. 

Leider sind die Docs hier offenbar alle noch auf dem “alten” System (nenne ich jetzt mal Bootstrap.php System). Ich möchte nur ungern zwei Systeme gleichzeitig fahren. Daher stellen sich mehrere Fragen:

Wie registriere ich nun korrekt einen neuen Controller aus dem Plugin und wie verwende ich den View richtig? Beispiel:


 class SaltMessageOfTheDay extends \Shopware\Components\Plugin { ... public function addToTemplateDir() { /\*\* @var Enlight\_Template\_Manager $view \*/ $view = Shopware()-\>Container()-\>get('template'); $view-\>addTemplateDir( \_\_DIR\_\_ . '/Resources/views' ); $view-\>assign('slogan', $this-\>getSlogan()); } 

Aus dem alten SwagSloganOfTheDay Tutorial scheint so nicht zu funktieren. Das Template in ./custom/plugins/SaltMessageOfTheDay/Resources/views/frontend/index/index.tpl wird nicht geladen (entspricht grob dem aus dem Tutorial, natürlich ohne die nicht assigned Teile).

 {extends file="parent:frontend/index/index.tpl"} {block name="frontend\_index\_navigation\_categories\_top\_include" prepend} 
{$slogan}
 {/block}

Im Grunde so…

Ähnlich gehts mir mit den Controllern:

public function install() { $this->registerController(‘frontend’, ‘test’); }

gibt es im neuen $this context auch nicht mehr. 

Ebenso gibt es $this->Config() nicht mehr.

Wie “konvertiere” ich am besten die Tutorials ins neue System?

Hallo,

die Dokumentation zum neuem Plugin System findest du hier: https://developers.shopware.com/developers-guide/plugin-system/.
Teile davon sind noch „Work in Progres“.

Es fehlen im neuem System noch ein paar Convienece Methoden. Die Konfiguration kannst du folgendermaßen auslesen:

$configReader = $this->container->get('shopware.plugin.config_reader');
$pluginConfig = $configReader->getByPluginName($this->getName());

$view->assign('sloganSize', $pluginConfig['font-size']);
$view->assign('italic', $pluginConfig['italic']);
$view->assign('slogan', $this->getSlogan());

Viele Grüße,
Benjamin Cremer  Shopware

1 Like

Vielen Dank für die fixe Antwort. 

Ja besonders die Convinience Methoden bereiten mir Probleme beim Umsetzen. Wäre toll wenn da noch eine Doku/Guide zu käme.

Achso, was wäre jetzt der richtige Weg einen Controller zu registrieren?

Hey,

hier kannst du dir anschauen wie ein Controller registiert werden kann :wink:

Grüße,
Simon

1 Like

Ok, also wird hier in der services.xml der Controller eingebunden. 

Da kommt mir gleich die nächste Frage:
Die services.xml ist ja komplett Symfony2. Allerdings nicht wie dort üblich im /app/config/services.xml sondern hier im /Resources Ordner. 

Versteht Shopware auch das yml Format an dieser Stelle (wäre toll… ich mag yaml)?

Hey Ancillius,

Shopware versteht an der Stelle nur XML und es ist momentan auch nichts anderes geplant. :wink:
Verbesserungsvorschläge kannst du jederzeit gerne über den Issuetracker anlegen: https://issues.shopware.com/

BTW: Der Controller wird trotzdessen noch über ein Event registriert nur ist das hier in einem Subscriber welcher dann in der services.xml registriert wird (falls du es übersehen haben solltest): https://github.com/shyim/shopware-profiler/blob/master/Subscriber/ProfilerController.php

Viele Grüße,
Simon

1 Like

Mh, was ist denn jetzt die Empfehlung mit dem Plugin-System? …

Setzt man neue Plugins klassisch auf so wie “grob” ab Shopware 4, oder ist jetzt die Devise in dem 5.2er Stil Plugins aufzusetzen?
Weil, abwärtskompatibel ist das ja alles nicht, bzw. selbst die Doku ist ja noch “nicht einmal” abgeschlossen … ?

Ich bin etwas verwirrt.

Schöne Grüße,
Niklas

…push…
 

Eine verständlichere und “aktualisierte” Doku des neuen Pluginsystems wäre wünschenswert.
Explizit für eine Migration von dem alten Plugins System.

Ist für mich persönlich (Frontend-Entwicklung) echt ein Krampf das Ganze.

Danke und Gruß

Eine verständlichere und „aktualisierte“ Doku des neuen Pluginsystems wäre wünschenswert.

Äh Sorry @thom‍ , aber laut Shopware Newsletter sind Influencer (luftnummern) und Jungunternehmer (die keine sind), etwas wichtiger als eine lesenswerte Doku. Wer braucht schon neue Plugins? :wink: