Plugin Reihenfolge

Hallo,

kann man beeinflussen, in welcher Reihenfolge ein  Plugin aufgerufen wird?

Wir würden gerne ein Plugin, vor einem anderen Plugin ausführen.

Die Funktion subscribeEvent($event, $listener, $position = null) hat ja den Parameter $position.

 

Ist das vielleicht ein Ansatz?

 

Grüße,

Alexander H.

Hi,

ja, genau - die Events werden in der Reihenfolge der Position ausgeführt - je größer der Wert, desto später kommt der Callback des Plugins zur Ausführung. Negative Werte sind auch möglich. 

Alternativ kannst du im Fall der Pre- und PostDispatch-Events auch einfach ein anderes Event nehmen: Bei den PostDispatch-Events ist die Reihenfolge beispielsweise folgende:

  • Enlight_Controller_Action_PostDispatchSecure_MODULE_CONTROLLER
  • Enlight_Controller_Action_PostDispatchSecure_MODULE
  • Enlight_Controller_Action_PostDispatchSecure
  • Enlight_Controller_Action_PostDispatch_MODULE_CONTROLLER
  • Enlight_Controller_Action_PostDispatch_MODULE
  • Enlight_Controller_Action_PostDispatch

 

Besten Gruß,

Daniel

1 Like

Hey Daniel,

danke für die schnelle Antwort!

Kann man die Bootstrap.php im eigenen Template überschreiben? Vlt. hast du ja auch darauf eine Antwort:

https://forum.shopware.com/discussion/40396/plugin-bootstrap-php-im-template-ueberschreiben?new=1

Beste Grüße,

Alexander

 

Hallo,

wie ist dann die Reihenfolge, wenn die Plugins nichts als position angegeben haben?

Bleibt das dem Zufall überlassen, nach dem Namen des Plugins …?

Wenn man dann einen negativen Wert für das eigene Plugin angibt, wird das dann immer vor

allen anderen Plugins ausgeführt, die nichts angegeben haben?

Viele Grüße,

Werner.

Die Plugins werden grob gesagt nach der Installationsreihefolge initialisiert. Die Query zum Ermitteln der Plugins ist folgende:

SELECT name, version, namespace FROM s_core_plugins WHERE active = 1 AND installation_date IS NOT NULL;

Eine negative Position schiebt den Subscriber vor alle anderen Plugins. Das ist richtig. Wenn man keine Position angibt, bekommen er die Position 0 in der Installationsreihefolge.

HTH, Arne

1 Like