Mehrfaches Überschreiben von Markup durch Plugins

Hallo zusammen :slight_smile:

Mich würde interessieren, wie genau ihr mit dem mehrfachen Überschreiben der SW Core Templates umgeht. Ganz konkret geht es um Folgendes:

  • Das benutzerdefinierte Theme überschreibt per sw_extend den block {% block page_checkout_item_remove_submit %} in einer bestimmten Shopware Template Datei. Es wird damit lediglich z.B, das Markup eines Buttons angepasst:
<button id="der-button" class="neue-klasse-vom-theme">
...
</button>
  • Ein Drittanbieter-Plugin überschreibt nun ebenfalls den block {% block page_checkout_item_remove_submit %} und passt darüber ebenfalls die Klasse des Buttons an:
<button id="der-button" class="neue-klasse-vom-drittanbieter-plugin">
...
</button>

In solchen Fällen hilft einem die schöne parent() Funktion ja leider nicht weiter und der Button wird nur eine der beiden neuen Klassen erhalten.
Man könnte jetzt natürlich hergehen und die Änderungen des Drittanbieter-Plugins manuell in das eigene Theme einbauen. Aber erstens kann das schnell ausarten und zweitens geht damit die Update-Kompatibilität des Drittanbieter-Plugins verloren.
Gibt es für solche Fälle irgendeine Vorgehensweise, die man guten Gewissens wählen kann/soll?

Ich danke euch :slight_smile:

Grüße
Volker

Storefront, Theme, Plugin – das ist die Reihenfolge. Im Theme und Plugin kann man die Reihenfolge ändern.

Twig-Blöcke können nur einmal überschrieben werden. Unter Umständen hilft es, im Plugin das sw_extend von Storefront auf Theme zu ändern. Dann werden sowohl die Änderungen des Theme als auch Plugin übernommen.

An deinem konkreten Beispiel hilft diese allgemeine Beschreibung aber nix. Da bleibt dir in der Tat nur ein eigenes Plugin zu schreiben und sowohl Theme als auch Plugin damit zu überschreiben. Dann ist es zumindest updatesicher (falls sich an dem Block nix ändert).

Das mit der Reihenfolge ist klar, momentan überschreibt unser Theme die Änderungen an Plugins. Aber wenn ich dich richtig verstehe, gibt es wohl keine echte „Lösung“ um das Überschreiben von Blöcken gleichzeitig von zwei Seiten zu ermöglichen, also quasi zu mergen so dass das Resultat beide Änderungen enthält.
Dann bleibt wohl nur die Drittanbieter-Plugin Klasse(n) ins Theme zu übernehmen und gut zu dokumentieren, so dass bei einem Plugin-Update daran gedacht wird die Kompatibilität an dieser Stelle zu überprüfen. Solange es nur Klassen von HTML-Elementen betrifft ist die Wahrscheinlichkeit ja auch eher gering, dass diese sich ändern…

Lieben Dank für dein Feedback :slight_smile: