Mehrmals gleichen smarty-Block überschreiben - welche Reihenfolge?

Hallo,

 

Ich wollte gerade Template-Anpassungen an der Intelligenten Suche vornehmen.
Dafür habe ich ein weiteres Plugin. Beide überschreiben in frontend/search/ajax.tpl den Block search_ajax_inner

Allerdings wird weiterhin das Template der Intelligenten Suche geladen.

Die Anpassungen des anderen Plugins werden nicht berücksichtigt.

Wie kann ich diese Reihenfolge ändern? Bzw. gibt es eine Reihenfolge?

Warum kann ich das durch die Intelligente Suche angepasste Theme nicht wieder erneut durch das andere Plugin anpassen?

*Push*

injectbeforeplugins:

https://developers.shopware.com/designers-guide/smarty/#inheritance-and-plugin-templates

@BestShopPossible schrieb:

injectbeforeplugins:

https://developers.shopware.com/designers-guide/smarty/#inheritance-and-plugin-templates

Ok das injectbeforeplugins steuert aber nur die Reihenfolge von Template und Plugins.

Wie wird die Reihenfolge festgelegt, wenn ein Block gleichzeitig von mehreren Plugins überschrieben wird?

 

Das wird anhand der Reihenfolge der Subscribes gemacht. Also Plugins registrieren sich ja im Stack und so wird die Reihenfolge festgelegt.

@Moritz Naczenski schrieb:

Das wird anhand der Reihenfolge der Subscribes gemacht. Also Plugins registrieren sich ja im Stack und so wird die Reihenfolge festgelegt.

Wo genau finde ich das in der Datenbank? 

Ist das die Spalte position in s_core_subscribes?

Und falls ja: Was bedeuten dort die Werte? Heißt ein höherer Wert bei der position, dass dieses Plugin Subscribe zuerst ausgeführt wird oder muss man dafür dann eine niedrigere Zahl wählen?

In der Datenbank kannst du das nicht finden.

Du musst dir die beiden Plugins anschauen und prüfen, wo die Ihr Template registrieren. Dann kannst du schauen, ob du dich vorher einhängst oder per Parameter die Priorität mit übergibst. 

Wenn sich also ein Plugin auf dieses Event registriert:

'Enlight_Controller_Action_PostDispatch_Frontend_Detail' => 'onPostDispatchFrontendDetail'

Dann kannst du entweder das nächst “größere” Event nehmen:

'Enlight_Controller_Action_PostDispatch_Frontend' => 'onPostDispatchFrontend'

Oder die Priorität so setzen, dass du das Theme überschreiben kannst:

'Enlight_Controller_Action_PreDispatch_Frontend_Detail' => ['onPostDispatchFrontendDetail',-100],

In der Datenbank s_core_subscribes findest du nur das alte Plugin System. Das bringt dir also nichts.