Template Anpassung durch Twig-Datei im Plugin. Wie geht das?

Hallo,

derzeit entwickle ich ein Plugin, welches auch Anpassungen am Template erfordert.

Es soll die cms-element-product-description-reviews.html.twig angepasst/erweitert werden.

Die Originaldatei liegt hier:
/httpdocs/vendor/shopware/storefront/Resources/views/storefront/element/cms-element-product-description-reviews.html.twig

Eine Ableitung mit Änderungen in meinem individuellen Template:
/httpdocs/custom/plugins/MeinTemplate/src/Resources/views/storefront/element/cms-element-product-description-reviews.html.twig

Eine weitere Ableitung in meinem Plugin:
httpdocs/custom/plugins/MeinPlugin/src/Resources/views/storefront/element/cms-element-product-description-reviews.html.twig

Die Datei im Plugin enthält folgenden Code:

{% sw_extends ‚@Storefront/storefront/element/cms-element-product-description-reviews.html.twig‘ %}

{% block element_product_description_reviews %}
{{ parent() }}

mein Code

{% endblock %}

Wenn ich diesen Code in meiner Template-Ableitung implementiere, wird die Änderung im Frontend angezeigt.
Implementiere ich den Code in der Twig-Datei im Plugin, wird der Inhalt leider nicht angezeigt, d.h. die Datei wird nicht aufgerufen.

Was ist falsch, bzw. was muss ich noch tun, damit auch der Inhalt der Datei aus dem Plugin geladen wird?

Danke

Das Plugin hast du installiert und aktiviert?
Den Cache danach geleert?

Wenn du nicht weiter kommst hilft häufig in der .env.local den Modus von prod auf dev zu setzen. Dann kannst du dir das Template Rendering ansehen.

Es scheint mir, als wäre das so nicht möglich, weil man die Hierarchie in welcher Reihenfolge der Twig-Code geladen wird, also das Plugin zuletzt, nicht beeinflussen kann.

Dann schau dir doch einfach mal die Dokumentation an.

Das habe ich bereits gemacht.
Ich bekomme es aber dennoch nicht hin. keine Ahnung was ich falsch mache.

Das kann ich dir leider auch nicht sagen. Jedoch kann ich dir sagen, dass es definitiv möglich ist.

Du kannst mir das Plugin per privater Nachricht schicken.

Was passiert, wenn Du das parent() weglässt? Dann müsste der Block ja eigentlich leer sein. Gibt es irgendwas im Log?

Du kannst in deiner theme.json die gewünschte Reihenfolge, wie deine Views geladen werden, anpassen.

"views": [
  "@Storefront",
  "@Plugins",
  "@Themeone",
  "@Pluginone",
  "@Plugintwo",
  "@Themetwo"
],

Du musst allerdings auch aufpassen. Wenn du in deinem Theme und deinem Plugin den gleichen Block überschreibst und jeweils von @Storefront arbeitest, können sich die Änderungen gegenseitig überschreiben.

Handelt es sich beim Theme und Plugin um eine projektindividuelle Entwicklung? Meine Empfehlung ist für projektbezogenen Anpassungen - wenn möglich - nur ein Plugin zu machen und dort alles zentral reinzupacken.

Danke

Ich hatte tatsächlich ein Verständnisproblem und im Plugin eine separate theme.json angelegt.
Stattdessen war nur, wie von Dir vorgeschlagen, die Priorität/Reihenfolge der „views“ in der theme.json in meinem individuellen Template zu ändern.

Jetzt habe ich „@Plugins“ ans Ende gestellt und damit wird dann auch der Block aus der Twig Datei des Plugins geladen.

Eigentlich ganz einfach, wenn man es mal verstanden hat. :+1: