Plugins Template überschreiben

Hallo, versuche gerade das Erweitert Menü zu bearbeiten und habe dazu in meinem Template unter frontend/plugins/advanced\_menu/index.tpl die index.tpl erstellt. In er index.tpl: {extends file='parent:frontend/plugins/advanced\_menu/index.tpl'} {block name="frontend\_plugins\_advanced\_menu\_list\_item" prepend} Anpassungen hier {/block} Dann erscheint es nicht mehr… wo ist der Fehler? Habe schon viel gesucht und keie brauchbare Antwort gefunden…

*push*

Hi, im Shopware 5-Template gibt es die genannte Datei nicht mehr und im Shopware 4-Template macht es nur ein Include: {include file=‘frontend/plugins/advanced_menu/advanced_menu.tpl’} Es hat aber selbst keine Blöcke und lässt sich daher nicht anpassen. Sie könnten aber die “advanced_menu/advanced_menu.tpl” so anpassen. Viele Grüße Heiner

Okay, vielen Dank schon mal für die Antwort, allerdings verstehe ich das jetzt nicht ganz. Das Advanced Menu ist ja ein Plugin und die Datei frontend/plugins/advanced_menu/index.tpl existiert und scheint auch die verantwortliche Datei zu sein. Die “frontend/plugins/advanced_menu/advanced_menu.tpl”, welche ich laut Ihnen bearbeiten soll, liegt unter templates/_emotion/frontend/plugins/advanced_menu/advanced_menu.tpl und hat doch daher keine Relevanz für ein 5er Theme… Generell ist doch das Advanced Menu nur ein Plugin, welches laut der Vererbung doch mit einem Theme überschrieben werden können müsste?!

Hi, ja, es ist als Plugin in Shopware eingebunden . Die alten Templates dafür liegen aber im originalen (Emotion-)Template. Nur das aktuelle Responsive-Template findet man auch im „Plugin“: https://github.com/shopware/shopware/tr … s/frontend Und dort gibt auch eine „index/index.tpl“, die statt der „advanced_menu.tpl“ im SW5-Template verwendet wird. Gruß Heiner

Ich stehe grade vor dem selben Problem, dass ich im Block (frontend_plugins_advanced_menu) eigenen Code appenden will. Wenn ich die index.tpl aus /engine/Shopware/Plugins/Default/Frontend/AdvancedMenu/Views/frontend/plugins/advanced_menu/ in mein Theme unter /frontend/plugins/advanced_menu/index.tpl ablege, kann ich in dem Originalcode der Datei zwar Anpassungen machen, die auch greifen, aber ein einfaches {extends file=“parent:frontend/plugins/advanced_menu/index.tpl”} und nur meine Anpassungen an einem Block bewirken, dass das Advanced Menü gar nicht mehr angezeigt wird. Ich vermute mal, dass der Pfad in dem {extends}-Block nicht greift… Gruss

Hallo, wird der Block denn im eigenen Template komplett überschrieben oder auch ein append/prepend gemacht? Mit der eigenen index.tpl überschreibt man ja die Anpassungen des Plugins, wenn der Block also komplett überschrieben wird, müssen ja auch die Inhalte die es in diesem Block gibt mit ins eigene Template. Moritz

1 „Gefällt mir“

Verstehe ich das also richtig, dass ein einfaches append/prepend nicht möglich ist, da das Plugin ja bereits den block frontend\_index\_navigation\_categories\_top\_include appended? Ergo man durch das appenden/prependen an einem Block innerhalb eines bereits erweiterten Blocks nicht weiter erweitern?

1 „Gefällt mir“

Hallo, ja so verstehe ich das auch und habe das auch mal ausprobiert. Nun überschreibe ich folgendermaßen: {extends file='parent:frontend/plugins/advanced\_menu/index.tpl'} {block name="frontend\_index\_navigation\_categories\_top\_include" append} //kompletter Inhalt der frontend/plugins/advanced\_menu/index.tpl + Änderungen {/block} Nun bekomme ich die Änderungen angezeigt. Aber ich es so nicht möglilch auch nur einen einzelnen Block darin zu überschreiben? Wie oben beschrieben nein, oder doch?

[quote=„dupp“]Aber ich es so nicht möglilch auch nur einen einzelnen Block darin zu überschreiben? Wie oben beschrieben nein, oder doch?[/quote] Bis jetzt noch nicht, also so wie oben beschrieben den gesamten Inhalt übernehmen. Aber: Der letzte commit im Plugin verrät so wie ich es verstehe einen Fix: https://github.com/shopware/shopware/commit/9164f17ddde0defc11795bfdf07cd2ce7b69515d [quote] +* Removed extendsTemplate() method in the AdvancedMenu plugin. Now the template uses the normal {extends} action. +* Moved template file of the AdvancedMenu plugin from the plugin directory to the normal index directory. +* Moved content for the AdvancedMenu to separate include file. +* Added new Smarty block for extending the complete AdvancedMenu template frontend_plugins_advanced_menu_outer. [/quote] Heißt für mich - ab dem nächsten Update können wir auch das Menü ordentlich anpacken :slight_smile: Schöne Grüße, Niklas

2 „Gefällt mir“

Hey Zusammen,

Ich habe aufmerksam eure Schritte durchgelesen und mit den jeweiligen SW Versionen verglichen.
Mit der aktuellen (okay fast aktuellsten) Version 5.1.6 ist dieser Bugfix seit längerem behoben -> kein Problem mehr.

Somit gehe ich davon aus, dass ich einen überlegungs Fehler mache mit der Vererbung.
Könnte mir hier einer ein wenig Licht ins dunkle bringen?

Die zu editierende Datei liegt unter: shopware/engine/Shopware/Plugins/Default/Frontend/AdvancedMenu/Views/frontend/index/index.tpl

Hier überschreibt das Plugin keine Blöcke weil dahinter “append” steht.
Wenn man nun jedoch eine Datei anlegt, welche die Datei “index.tpl” des Plugins überschreibt (NICHT extended), dann müsste auch der Teil der “appended” wird verschwinden, richtig?
Meine angepasste (resp. leere “index.tpl”) wurde im folgenden Ordner angelegt.
themes/Frontend/Name/frontend/plugins/AdvancedMenu/index/index.tpl

Wäre korrekt oder?  -> Falsch

Wie ist hier die richtige Vorgehensweise?
Ziel: Advanced Menü im Content Bereich in einem anderen Block einbinden. Zurzeit wird das AdvancedMenü zweimal ausgegeben.

Ist es auch möglich tpl-Dateien anderer Community Plugins zu überschreiben?

 

Konkret möchte ich die Template-Änderungen, die die Intelligente Suche an der Ajax Suche vornimmt komplett entfernen, da ich ein weiteres Plugin installiert habe, das ebenfalls die Ajax Suche erweitert.

Im Plugin SwagFuzzy (Intelligente Suche) gibt es die Datei Views/ frontend/search/ajax.tpl mit folgendem Inhalt:

 { **extends** file= **"parent:frontend/search/ajax.tpl"** } { **block** name= **"search\_ajax\_inner"** } { **block** name= **"search\_ajax\_inner\_swag\_fuzzy"** } { **include** file= **"frontend/swag\_fuzzy/search/ajax.tpl"** } {/ **block** } {/ **block** }

 

Weiter dann die Datei Views/ frontend/swag_fuzzy/search/ajax.tpl mit dem kompletten Inhalt:

 { **block** name= **"frontend\_ajaxsearch\_index\_inner"** } // ... komplette Anpassung der Ajax-Suche {/block}

 

Nun habe ich aber ein weiteres Plugin, mit einer Datei Views/ frontend/search/ajax.tpl

 { **extends** file= **"parent:frontend/search/ajax.tpl"** } { **block** name= **"search\_ajax\_inner"** } // ... komplette Anpassung der Ajax-Suche {/ **block** }

 

Wie kriege ich es nun hin, dass die Anpassungen der Intelligenten Suche NICHT geladen werden ohne das Plugin zu deaktivieren?

Es geht nur um die Darstellung in der Ajax-Suche. Die Intelligente Suche soll trotzdem weiterhin auf der Suchergebnisseite suchen.

Ich hänge hier leider auch fest.
 

Das Plugin ist installiert.

Aus dem Verzeichnis

/engine/Shopware/Plugins/Default/Frontend/AdvancedMenu/Views/frontend/advanced_menu

wurde die index.tpl komplett nach 

/themes/Frontend/{CustomThemeName}/frontend/advanced_menu/

kopiert.

Die Datei selbst beginnt dabei wie hier beschrieben: http://8mylez.com/blog/plugin-theme-struktur-ueberschreiben-und-plugins-individuell-anpassen/

mit

{extends file="parent:frontend/advanced_menu/index.tpl"}

Der rest der Datei ist wie in der originallen tpl Datei.

Ich bekomme aber weiterhin keine Ausgabe, außer ich bearbeite die Theme.php und setze

/*protected $injectBeforePlugins = false;*/
protected $injectBeforePlugins = true;

Habe ich irgendwo etwas vergessen? Wo könnte noch etwas fehlen?
 

Das Plugin appended sich ja über die index/index.tpl  in den Block  frontend_index_navigation_categories_top_include.
Welche sich bei mit im Template entsprechend in /index/index.tpl befindet und meines erachtens unangetastet aussieht:

{block name="frontend_index_navigation_categories_top_include"}
        {include file='frontend/index/main-navigation.tpl'}
{/block}

 

Wo liegt der Fehler bzw. wo könnte sich ein Fehler eingeschlichen haben?

Jeglich Hilfe sehr willkommen.