swag_custom_products in Theme überschreiben

Hallo,

wir würden gerne ein eingesetztes Plugin SwagCustomProducts durch unser Theme überschreiben. Beim Überschreiben von Plugins stößt man ja leider regelmäßig wieder vor einigen Fragen:

  1. Wie kann ich Plugins in meine Entwicklungsumgebung bekommen um diese durch das Theme zu bearbeiten?
  2. Welches sind die richtigen Pfade und extends-Befehle?
  3. Wie vermeide ich, dass es zu Errors kommt, wenn ich includes ändere und das Plugin z.B.: nicht mehr installiert ist?

 

Zu 1 - Aktuell arbeite ich das lokal aus und lade das Theme immer wieder hoch und prüfe… das ist sehr mühsam…

Zu 2 - Beispiel:

/engine/Shopware/Plugins/Community/Frontend/SwagCustomProducts/Views/frontend/swag_custom_products/detail/index.tpl

soll bearbeitet werden.

Dazu fallen mir folgende Möglichkeiten ein:

  • THEMENAME/frontend/detail/index.tpl - {extends file=‘parent:frontend/detail/index.tpl’} --> geht
  • THEMENAME/frontend /swag_custom_products /detail/index.tpl - {extends file=‘parent:frontend/ swag_custom_products /detail/index.tpl’} --> geht nicht
  • THEMENAME/frontend /plugins/swag_custom_products /detail/index.tpl - {extends file=‘parent:frontend/ plugins/swag_custom_products /detail/index.tpl’} --> geht nicht

Ich hatte mal gelesen, dass Plugins, welche im Unterordner /frontend/ einen eigenen Plugin-Ordner haben (/swag_custom_products/) auch mit diesem gezielt im Theme angesprochen werden können.

Das führt mich nämlich zu Problem Nr. 3 :

Die Änderung, welche ich in der THEMENAME/frontend/detail/index.tpl mache, führt dazu, dass es zu einem Fehler kommt, wenn das Plugin nicht installiert ist. (Ich verschiebe nämlich einen include-Befehl. Gibt es die dahinterliegende Datei nicht, kommt es zu einem PHP-Fehler.) Wäre natürlilch praktisch, wenn der die Bearbeitung des Plugins auch nur das Plugin-File ersetzt und somit auch nur greift, wenn das Plugin installiert ist. Derzeit behelfe ich mir mit einer Variable, welche ich gefunden habe {if $swagCustomProductsTemplate}{/if} um den Include nur auszuführen, wenn das Plugin auch aktiv ist.

Hoffe jemand kennt Antworten auf meine vielen Fragen :wink:

Hast du denn vielleicht in der Theme.php die Vererbung angepasst? Siehe: Getting started with Smarty

Dann kannst du mit deinem Theme auch keine Plugins überschreiben.

Nein, die Standardvererbung wurde nicht angepasst, sodass

protected $injectBeforePlugins = false;

besteht und das Theme nach den Plugins greift. Die oberste varainte funktioniert ja auch als einzige…

Punkt 2 ist korrekt:

  • THEMENAME/frontend/swag_custom_products/detail/index.tpl - {extends file=‚parent:frontend/swag_custom_products/detail/index.tpl‘} –> geht nicht

Jetzt müsstest du uns noch das „geht nicht“ etwas genauer erläutern.  Wink

Am besten zeigst du uns mal den Inhalt deiner index.tpl. Gibt es eine Fehlermeldung? Werden deine Änderungen nicht angezeigt? 

Viele Grüße

Hallo simkli,

vielen Dank für deine Rückmeldung. Die Veränderungen sollen bewirken, dass der Wrapper von Custom Products unter der normalen Variantenkonfiguration erscheint.

anbei die Datei unter frontend/swag_custom_products/detail/index.tpl:

{extends file='parent:frontend/swag_custom_products/detail/index.tpl'}

{block name="frontend_detail_index_configurator"}
    {$smarty.block.smarty}

    {if $swagCustomProductsTemplate}
        {*Custom products frontend hook*}
        {block name="frontend_detail_data_swagcustomproducts"}
            {include file="frontend/swag_custom_products/detail/wrapper.tpl"}
        {/block}
    {/if}
{/block}

anbei die Datei unter frontend/swag_custom_products/detail/data.tpl:

{extends file='parent:frontend/swag_custom_products/detail/data.tpl'}

{* ...Remove Custom products frontend hook here and move to index.tpl *}
{block name="frontend_detail_data_swagcustomproducts"}{/block}

Fehlermeldung: Nein keine, es wird einfach angezeigt als würde ich keinerlei Änderungen tätigen.

ich bin auch gerade dabei zu versuchen Plugins zu überschreiben.

/engine/Shopware/Plugins/Community/Frontend/NetgradeAdditionalInfos/Views/frontend/listing/product-box/box-basic.tpl 
sollte im meinem Theme überschrieben werden , keine blocks die ausgetauscht werden.

Daszu sollte es doch reichen wenn ich 

/themes/Frontend/MEINTHEME/frontend/NetgradeAdditionalInfos/listing/product-box/box-basic.tpl

anlege. Oder? 

 

 

 

Hallo zusammen,

ich hatte diese Probleme bevor. und die Lösung ist etwas seltsam.

Zuerst die originale Template Struktur von dem Plugin ist Falsch. Deshalb haben wir dieses Problem.

Die Struktur muss sein: 

/engine/Shopware/Plugins/Community/Frontend/SwagCustomProducts/Views/frontend/plugins/swag_custom_products/detail/index.tpl

 dann können wir es überschreiben mit

THEMENAME/frontend/plugins/swag_custom_products/detail/index.tpl 

aber mit diese falsche Struktur etwas passiert. ich weiß nicht was.

aber in meiner Seit habe ich dieses Problem behoben mit:

THEMENAME/swag_custom_products/detail/index.tpl

und in Template

{extends file='parent:swag_custom_products/detail/data.tpl'}

ich weiß nicht, ob das in Ihrer Seit auch funktionieren werde. aber probieren Sie.

Viele Grüße,

Ahmad.