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 „Gefällt mir“
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 „Gefällt mir“