mdsw
1. Februar 2020 um 11:20
1
Laut dieser Doku https://docs.shopware.com/en/shopware-platform-dev-en/internals/plugins/plugin-themes?category=shopware-platform-dev-en/internals/plugins#theme-template-inheritance
kann die Reihenfolge der Vererbung in der theme.json festgelegt werden.
MEIN ZIEL: Storefront > Mein Theme > Plugins
Eben gau so, wie das in Shopware 5 möglich war, damit Plugins aus dem Store im Theme wirken können.
theme.json
"views": [
"@Storefront",
"@MyTheme",
"@Plugins"
],
@MyTheme habe ich durch den Namen meines Themes ausgetauscht.
Im Theme bearbeite ich die base.html.twig
{% sw_extends '@Storefront/storefront/base.html.twig' %}
{% block base_header %}
{% block base_header_inner %}
FOOOOOOOOO
{% endblock %}
{% endblock %}
In einem Plugin bearbeite ich ebenfalls die base.html.twig
{% sw_extends '@Storefront/storefront/base.html.twig' %}
{% block base_header %}
BAAAAAAAAAR
{{ parent() }}
{% endblock %}
ERGEBNIS : Die Überarbeitung aus dem Plugin greift nicht. Sie greift erst, wenn ich im Theme in der base.html.twig ebenfalls {{ parent() }} einfüge.
{% sw_extends '@Storefront/storefront/base.html.twig' %}
{% block base_header %}
{{ parent() }}
{% block base_header_inner %}
FOOOOOOOOO
{% endblock %}
{% endblock %}
ERGEBNIS : Zwei mal der selbe Header + Inhalt des Plugins.
mdsw
3. Februar 2020 um 19:29
2
Ich habe folgendes herausgefunden:
Plugin A und Plugin B überschreiben den Block {% block base_header %}, welcher im Theme bereits verändert wurde.
die theme.json sieht so aus:
"views": [
"@Storefront",
"@MyTheme",
"@Plugins"
],
Plugin A habe ich vor dem Theme installiert
Danach habe ich das Theme installiert
Plugin B habe ich nach dem Theme installiert
Leere ich nun den Cache mit bin/console cache:clear erscheint Plugin B
Leere ich den Cache mit ./psh.phar cache erscheint Plugin A
Ich habe das nun auch mit
"views": [
"@Storefront",
"@Plugins",
"@MyTheme"
],
getestet. Die Reihenfolge spielt keine Rolle… Auch ist mir nicht klar, ob es @MyTheme heißen soll, oder ob es ein Platzhalter ist und man dieses gegen den Namen des eigenen Theme Plugins austauschen muss…
[@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski „Moritz Naczenski“) Kann das irgendwer bei euch mal prüfen oder erklären was ich alles hier falsch mache?
Getestet mit der aktuellsten v6.1.9 Stable Version 999999.9999999
Also ich bin mir ziemlich sicher, dass bei @ dein Theme-Name hingehört, damit es funktioniert.
1 „Gefällt mir“
mdsw
3. Februar 2020 um 19:46
4
[@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski „Moritz Naczenski“) Danke für die abendliche Antwort
Theme Name aus der theme.json
oder
Name des Plugins aus der composer.json?
Ich habe beides getestet…
Es bleibt dennoch dabei, dass die Installations-Reihenfolge darüber entscheidet, welche Templates letztlich überschreiben… abhängig vom gewählten Cache-Leeren Befehl…
biloba
4. Februar 2020 um 09:16
5
Gerade bei mir auch getestet, bei mir tut folgendes auch nicht
„views“: [
„@Storefront “,
„@SwagCmsExtensions “,
„@Plugins “,
„@Theme “
]
SwagCmsExtensions überschreibt mir immer noch meine Theme
Was die art des cache löschens angeht, ist das Problem bekannt und wird gerade gefixed.
Bis dahin liefert nur ./psh.phar cache das richtige Ergebnis.
rufen Plugin A und Plugin B jeweils parent() auf?
@mdsw schrieb:
Ich habe folgendes herausgefunden:
Plugin A und Plugin B überschreiben den Block {% block base_header %}, welcher im Theme bereits verändert wurde.