mit3233mit3233 MitgliedKommentare: 5 Danke erhalten: 0 Mitglied seit: 8. Januar

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!

2 Antworten

  • Moritz NaczenskiMoritz Naczenski AdministratorKommentare: 5362 Danke erhalten: 1508 Mitglied seit: September 2013

    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.

    Zitieren
    Akzeptierte Antwort
  • simklisimkli MitgliedKommentare: 1158 Danke erhalten: 411 Mitglied seit: Februar 2014

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

    Viele Grüße

    Zitieren
    Akzeptierte Antwort
  • Akzeptierte Antworten

Antworten

  • Moritz NaczenskiMoritz Naczenski AdministratorKommentare: 5362 Danke erhalten: 1508 Mitglied seit: September 2013

    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.

    Zitieren
    Akzeptierte Antwort
  • mit3233mit3233 MitgliedKommentare: 5 Danke erhalten: 0 bearbeitet 13. Januar Mitglied seit: 8. Januar

    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?

  • simklisimkli MitgliedKommentare: 1158 Danke erhalten: 411 Mitglied seit: Februar 2014

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

    Viele Grüße

    Zitieren
    Akzeptierte Antwort
  • mit3233mit3233 MitgliedKommentare: 5 Danke erhalten: 0 Mitglied seit: 8. Januar

    Danke! Dann habe ich alles richtig verstanden :)

Anmelden oder Registrieren, um zu kommentieren.