Problem mit Block überschreiben in Plugin

Hallo, ich würde gerne in einem Plugin einen Block überschreiben, aber es funktioniert nicht. Hier meine Vorgehensweise: Die Originaldatei des Heidelpay-Plugins liegt in /prod/engine/Shopware/Plugins/Community/Frontend/HeidelGateway/Views/frontend/register. Die Datei hp_payment.tpl habe ich nun kopiert und möchte den Block {block name=‘frontend_checkout_confirm_left_payment_method’} überschreiben. Um zu testen, schreibe ich einfach mal einen leeren Block dorthin und setze an den Anfang noch den extends-Befehl zum Original. Die Datei sieht dann so aus: {extends file="engine/Shopware/Plugins/Community/Frontend/HeidelGateway/Views/frontend/register/hp\_payment.tpl"} {\* confirm Checkout Payment method Block \*} {block name='frontend\_checkout\_confirm\_left\_payment\_method'} {/block} Diese Datei lade ich dann in einem Template hoch unter emotion_prod/frontend/register als hp_payment.tpl Leider greift dies aber nicht und ich verstehe nicht warum. Kann mir jemand hier auf die Sprünge helfen, was daran falsch ist? Cache komplett gelöscht habe ich. Mache ich die Änderung zum Test in der Originaldatei, greift sie. Das ist aber natürlich keine Lösung. Muss ja auch updatesicher sein. Vielen Dank!

Hat keiner Idee, was ich hier tun kann?

Lass mal das komplette {extends ... weg.

1 „Gefällt mir“

Schon probiert, das ändert leider nichts. Ich verstehe es absolut nicht. In diesem register-Ordner sind noch 2 weitere Dateien aus dem plugin, die ich wie üblich überschreiben kann durch kopieren der Datei, ändern und hochladen in meinem Template. Da ist auch kein extends oder sonstwas notwendig. Aber mit dieser 1 Datei hier klappt das einfach nicht und ich verstehe nicht, warum.

Plugin Templates kannst du nicht erweitern, sondern nur vollständig überschreiben. Dazu lege eine Datei in /templates/local/frontend/register/hp_payment.tpl an und füge den kompletten content ein. Viele Grüße

Das funktioniert leider auch nicht, schade. Cache gelöscht und getestet, nach wie vor alles beim alten…

Ist das Problem gelöst worden und wenn ja wie? Danke

Leider habe ich bis heute keine Lösung dazu. Ich muss dann jedes Mal nach einem Plugin Update die original Dateien anpassen.

Seit Shopware 5.1 ist die Reihenfolge 1.) Plugin Templates 2.) eigenes Themes. Daher sollte es ohne Probleme möglich sein, dass du in deinem Theme das template eines Plugins überschreibst. Viele Grüße

Da wir aktuell noch auf Version 4.3.6 sind, kann ich das nicht prüfen. Eigentlich sollte es damit ja auch funktionieren, macht es aber nicht, seltsamerweise nur beim Heidelpay Plugin, bei anderen Plugins klappt es ja. Schon etwas seltsam, aber hoffentlich bald erledigt, wenn wir endlich updaten können…

Wir benutzen das Plugin auf der Shopware-Version 5.2.12 und das Überlagern der Datei HeidelGateway/Views/frontend/register/hp_payment.tpl funktioniert trotzdem nicht.
Ich habe die Datei in themes/Frontend/MeinTheme/frontent/register angelegt, von der Logik her genau wie bei anderen Plugins, die ich überlagert habe.
Jedoch funktioniert die Überlagerung nur beim Heidepay-Plugin nicht.
Gibt es dazu immer noch keine Lösung?

Die Datei hp_payment.tpl muss nach _themes/Frontend/MeinTheme/frontent/register _und dann klappt es bei mir. 

Du musst aber am Dateianfang den extend-Befehl machen mit {extends file=“parent:frontend/index/index.tpl”}, das hatte ich immer falsch. Mit diesem Befehl geht es jetzt aber problemlos.

Stehe vor der gleichen Aufgabe. 
@ChriMaLuxe‍ leider klappt es so nicht. Das Plugin „Profiler - Friends of Shopware“ gibt mir folgende gerenderte Templates an oberster Stelle an:
„frontend/account/payment.tpl frontend/plugins/seo/index.tpl register/hp_payment53.tpl“

Ich hab bereits die „hp_payment.tpl“ und die „hp_payment53.tpl“ in „themes/Frontend/MeinTheme/frontent/register“ versucht, leider ohne Erfolg.

Hast du noch einen Hinweis an was es liegen könnte (Shopware 5.4.5)?

Nein, leider nicht. Wir nutzen wieder das Original ohne Anpassungen.

Ich habe es bei mir so gemacht in der Theme.php folgendes einfügen

protected $injectBeforePlugins = false;

Dann kannst du das Plugin in deine Theme überschreiben solte ein Plugin als Beispiel den checkout/ajax_cart.tpl erweitern / überschreiben dann das hier nicht vergessen, in meinem Fall {extends file=“parent:frontend/checkout/ajax_cart.tpl”}. Blöcke überschreiben und dann unter dein Theme/frontend/checkout/ajax_cart.tpl speichern.

Viel Spaß hoffentlich hilft euch das

 

 

Danke für die Antworten.

@hds‍ hast du es beim Heidelpay-Plugin erfolgreich so gemacht?
Dein Weg klappt leider bisher auch nicht.

Bisher klappt nur der Weg über die Original-Datei. :frowning:

Ich möchte in diesem Block nur eine Klasse ändern, warum greift das hier nicht auf die übliche Weise?
Der Codeauszug an der Stelle die geändert werden soll (+ „Profiler - Friends of Shopware“-Hilfe)

      Zurück