injectBeforePlugins in abgeleitetem Theme - Verständnisfrage

Hallo,

ich habe eine Frage zur Vererbung der Theme.php in einem abgeleiteten Theme.

Es handelt sich um ein Theme aus dem Store, wo “injectBeforePlugins” nicht auf true gesetzt wird. Da ich ein Plugin geschrieben habe, das in die “/frontend/listing/product-box/product-badges.tpl” eingreift - diese aber auch vom Theme geändert wird - hat das Plugin natürlich keine Auswirkungen auf das Theme.

Jetzt habe ich ein neues Theme von diesem Theme abgeleitet und dort in die Theme.php “protected $injectBeforePlugins=true;” eingetragen. Dies hat aber keine Auswirkungen, erst wenn ich in dem Eltern-Theme die Theme.php ändere, greift das Plugin.

Bedeutet dies also: Alle Shops, die ein Theme besitzen, das “injectBeforePlugins” nicht auf “true” setzt, können keine Plugins verwenden, die ein Template anpassen welches auch durch das Theme angepasst wird? Auch nicht wenn ich das Theme ableite und im Child den Wert in der Theme.php setze?

Ich finde dazu nichts in der Doku, deshalb frage ich hier einmal nach.

Danke und Grüße!

Wie soll das funktionieren? Das Parent-Theme sollte immer $injectBeforePlugins = true sein und das Child-Theme dann $injectBeforePlugins = false. Sobald das Parent erst nach den Plugins kommt, kann das Child ja nicht mehr davor kommen.

Eine typische Struktur wäre:

ParentTheme abgeleitet von Responsive = injectBeforePlugins true
Plugins
ChildTheme abeleitet von ParentTheme = injectBeforePlugins false

Das Standard-Theme des Shops sollte also immer vor den Plugins eingebunden werden und alle Änderungen die Plugins überschreiben dann halt im ChildTheme gemacht werden.

Vielen Dank für die schnelle Antwort, Moritz! Aber das Parent-Theme des Theme-Entwicklers hat $injectBeforePlugins = false und das Child-Theme auch. Wenn ich nun mit einem Plugin etwas ändern möchte, passiert rein gar nichts - was ja auch logisch ist. So wie du es schreibst sollte es sein, das ist mir schon klar. Denn das Child-Theme würde in dem Falle auch die Dinge des Plugins nicht überschreiben.

Also zusammengefasst: Eigentlich sollten die Themes im Store ein $injectBeforePlugins = true haben, so wie es Shopware empfiehlt? Dieses Theme hat es nicht und jetzt meine abschließende Frage: Die einzige Möglichkeit dies zu beheben, wäre nachträglich die Zeile in dem Parent-Theme zu ändern? Was passiert bei einem Update des Themes über den Store? Dann steht wieder “false” in der Theme.php?

Ganz genau. Schreibe doch einfach den Hersteller an, dass er es im nächsten Update behebt.

Viele Grüße

Danke! Dann habe ich alles richtig verstanden :slight_smile: