Hallo, ich habe hier zwei Plugins Plugins/Local/Core/Plugin 1 (eine Schnittstelle) Plugins/Community/Frontend/Plugin 2 (Responsive Template) Jetzt greifen beide Plugins auf ein und den selben Block im Confirm Controller zu, ich weiß bereits, dass das Core Plugin in Local (was kein Swag ist nebenbei bemerkt, ich aber trotzdem nicht verschieben/ändern darf) zu letzt greift, also das Plugin 2 wird in diesem Block von Plugin 1 überschrieben. Jetzt frage ich mich, warum das so ist und, wie ich das ändern kann ohne Plugin 1 zu verändern? Ein Lösungsansatz wäre ebenfalls ein Plugin in Local/Core zu legen, was wiederum Plugin 1 überschreibt, aber geht es nicht einfacher bzw. wird das überhaupt gehen?
Wenn Du Zugriff auf den Quellcode hast, d.h. es vllt sogar dein eigenes Plugin sein sollte, so kannst du bei der Eventregistrierung noch einen dritten Parameter mit angeben. Dieser ist eine Zahl von 0 bis 65535. Je höher der Wert, desto später wird es abgearbeitet. Achtung: Es gibt Pluginentwickler, die ganz gezielt grundsätzlich den max Wert mit angeben, damit Ihr Plugin immer als letztes “dran” ist. In dem Fall wird abgearbeitet, wie die Einträge in der DB stehen. (Ob das zuletzt installierte zuerst oder zuletzt dran ist, weiß ich allerdings nicht, wobei ich davon ausgehen würde, dass es zuletzt dran ist) VG, Ruben
Danke vielmals für die schnelle Antwort. private function registerEvents() { $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch\_Frontend\_Checkout', 'onPostDispatchCheckout', 65535 ); }
So richtig? Was wäre denn der Standardwert? Wo werden die registrierten Events in der DB gespeichert?
Sieht gut aus. Der Standardwert ist 0. Ich habe auch gerade mal den Quellcode überflogen (wirklich nur überflogen) Und mir auch die DB-Struktur angeschaut. Auch wenn einem auf den Shopware Schulungen beigebracht wird, dass 2^16 das Maximum ist, was eingetragen werden kann, so scheint es doch, als wäre 2^31 viel eher das Max. Kann aber wie gesagt gut sein, dass ich was übersehen habe.
Habe eben ein Plugin mit der oben angegeben Zahl erstellt. Funktioniert leider nicht, das Core Plugin behält immer noch die Oberhand. Wo werden die registrierten Events in der DB gespeichert? Edit: s_core_subscribes Hat Pos: 0 … aus irgendeinem anderen Grund lässt sich dieser Block nach dem Core Plugin nicht mehr überschreiben.
Das Plugin muss dafür natürlich neu installiert werden. Nur bei der Installation werden die Subscribes gesetzt.
Ja, das hatte ich gemacht. Trotzdem überwiegt das Core Plugin.