Plugin Themes überschreiben und anpassen

Plugin Themes überschreiben und anpassen

Alexander Wolf 10. Mai 2016 43

Plugin anpassen - Du bist mit dein Shop zufrieden, aber für die Vollständigkeit installierst du noch eben ein neues Plugin. Huch wie sieht das denn aus? - Das Plugin passt nicht zur Theme. Kein Problem, Plugin Themes kann man ganz einfach bearbeiten. Wir zeigen wie!

(Lesedauer ~ 5 Minuten)

Wie man eine Theme in Shopware anpasst ist ja bekanntlich kinderleicht. Aber die Frage ist: 

Funktioniert das auch mit Plugins?

Ja!

Wie funktioniert das?

Im Prinzip funktioniert es genauso wie auch beim normalen Theme. Die Plugins werden in unserem Theme überschrieben, d.h. wenn wir das Theme wechseln sind auch unsere Anpassungen weg. Aber in der Regel passiert das nicht so oft.

Es macht durchaus Sinn die Plugin im Theme zu überschreiben, da es immer im Zusammenhang mit unserem Theme steht und sowieso bei einem neuen Theme anders angepasst werden muss.

Damit das Ganze etwas klarer wird, passen wir das Plugin Erweiterte Menü von Shopware an. Falls das Erweiterte Menü bei euch nicht aktiviert ist, könnt ihr das ganz einfach im Plugin Manager machen. Installieren, Aktivieren, Cache leeren und fertig!

Es werden nur wenige Schritte benötigt um an unser Ziel zu kommen:

  1. Struktur anpassen mit Smarty
  2. Styling anpassen mit LESS


So schaut das Erweiterte Menü standardmäßig aus:

Shopware 5 Erweitertes Menü

Und so soll das Menü nach den Anpassungen aussehen:

Shopware 5 Erweitertes Menü Ergebnis

Was hat sich verändert?

Das Menü, welches erst angezeigt wird, sobald die Maus über einen Menüpunkt fährt, hat eine sozusagen eine Überschrift. In unserem Beispiel entfernen wir diese Überschrift, weil du durch einen Klick auf den Menüpunkt zu der Kategorie gelangst.

Außerdem ist der Hintergrund schwarz (du kannst natürlich jede Farbe wählen).

Beginnen wir mit Smarty!

Anpassen mit Smarty

Um Smarty Anpassungen machen zu können, musst du dir erst anschauen wie die Struktur des Plugins aussieht. d.h. in welcher Datei liegt welcher Code und in welchem Ordner liegt welche Datei?

Das Plugin Advanced Menu ist ein Standard Plugin von Shopware und immer mit dabei. Wir finden deshalb die Dateien des Plugins im Ordner:

/engine/Shopware/Plugins/Default/Frontend/AdvancedMenu

Uns interessiert wie der Ordner Views aufgebaut ist.

Im _public Ordner befinden sich die JavaScript und LESS Dateien. 

UPDATE: Jetzt gibt es noch drei weitere Ordner: advanced_menu, plugins und index. Früher war der Code des Menüs in dem Ordner advanced_menu untergebracht. Ab Shopware 5.4.X (möglicherweise schon früher) wird dieser nicht mehr genutzt.

Stattdessen müssen wir den plugins Ordner bei uns nachbilden. Da befindet sich das Menü selbst. 

In dem index Ordner wird der Code aus dem plugins Ordner eingebunden um die Kategorien im Template zu erweitern.

Um also das Menü anzupassen müssen wir die Smarty Template Datei index.tpl im Ordner plugins/advanced_menu erweitern.

Dazu musst du die Ordnerstruktur des Views Ordners in deinem Theme abbilden.

Du legst einfach in dem Ordner

/themes/Frontend/DEINTHEME/frontend

den Ordner plugins/advanced_menu mit der index.tpl Datei an.

Jetzt haben wir die gleiche Ordnerstruktur und können mit der index.tpl arbeiten.

Folgenden Code packen wir in die index.tpl:

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

{block name="frontend_plugins_advanced_menu_button_category"}{/block}

{block name="frontend_plugins_advanced_menu_button_close"}{/block}

  1. Zuerst erben wir das von der Eltern Datei, damit das Menü vollständig vorhanden ist.
  2. Danach entfernen wir die beiden Blöcke, die für die Überschrift zuständig sind.
  3. Speichern, Cache leeren und Theme kompilieren nicht vergessen!

So sieht das Ganze jetzt aus:

Menü Anpassungen Zwischenstand

Noch irgendwie nicht ganz so richtig. Den Rest können wir mit LESS anpassen und kommen dann zu dem vorgestellten Ergebnis.

Anpassen mit LESS

Bei LESS ist das Ganze etwas einfacher. Die Ordnerstruktur ist "egal". Es muss nur für dich Sinn machen. Aber du solltest dich trotzdem an ein paar Regeln halten.

Im Prinzip legen wir einfach eine neue LESS Datei in unserem _public/less Ordner an und verknüpfen diese in der all.less.

Solltest du schon kennen, falls nicht, schau dir vorher das an: Was du über die Shopware 5 Theme Struktur wissen musst und wie du ein erstes eigenes Theme erstellst oder Video: Wie du dein erstes Shopware 5 Theme anlegst und mit LESS anpasst – Teil 2

Pro-Tipp: Leg einen Ordner _plugins an, damit du selbst immer weißt, welcher Code zu einem Plugin gehört.

Du legst in dem Ordner

/themes/Frontend/DEINTHEME/frontend/_public/src/less

den Ordner _plugins mit der Datei advanced-menu.less an.

Der Name der Datei ist wieder nur für dich wichtig, sodass du weißt um welches Plugin es sich handelt.

In unsere all.less kommt folgender Inhalt:

@import "_plugins/advanced-menu";

Damit das Menü wie vorhin vorgestellt, packen wir folgenden Code in die advanced-menu.less:

.advanced-menu{
  border-top: 1px solid @brand-primary;
  background-color: black;
  color: white;

  .button-container{
    display: none;
  }

  .menu--list-item-link {
    color: white;
  }

  .item--level-1{
    .menu--list-item-link{
      color: white;
    }
  }
}

Speicher, Cache leeren und Theme kompilieren!

Wenn du alles richtig gemacht hast, sieht dein Menü jetzt so aus:

Fertiges Menü


Fazit

Jetzt kannst du alle Plugins anpassen dir den Weg kreuzen! Du musst nur wissen, welche Smarty Blöcke verwendet werden. Danach kann auch schon direkt das Styling loslegen. Damit kann dein Shop sich von deinen Konkurrenten abheben!

Ich habe dir den Code auf GitHub gepackt, um ihn besser zu vergleichen: https://github.com/8mylez/plugin-theme-anpassen

43 Kommentare

  • Ich stehe gerade ein wenig auf dem Schlauch und versuche das ein Template vom Plugin "Erweiterer Konfigurator" zu überschreiben bzw. zu erweitern.

    Und zwar die Datei:
    \custom\plugins\EmzAdvancedConfigurator\Resources\views\frontend\detail\configurator\content.tpl

    Wo muss ich das Template in meinem Custom Theme ablegen?

    Viele Grüße
    Tobias Bauhaus
  • Hallo,
    wir sind gerade auf das gleiche Problem mit Shopware 6 gestoßen. Sollte dort ja eigentlich ähnlich funktionieren, nur mit einer anderen Ordnerstruktur. Was gibt es da zu beachten?
  • Guten Tag, lieben Dank für Ihr Tutorial.

    Ich wollte es nutzen, um das advanced-menu nur einzublenden, wenn ich in einem Freitextfeld keine 1 drin stehen habe. Aber ich bekomme es nicht hin, vielleicht haben Sie einen Tipp für mich.

    Ich habe ein Freitextfeld erstellt Namens: category_yes_no

    Dann habe ich in der Datei main-navigation.tpl direkt unter {foreach $sMainCategories as $sCategory} eine if-Abfrage eingebaut:

    {if $category.attribute.category_yes_no != 1} und unten wieder geschlossen mit {/if} {/foreach}

    Dadurch wird in der main-navigation die Kategorie ausgeblendet, der ich im Freitextfeld eine 1 eingetragen habe. Funktioniert auch. Aber: der entsprechende menu--container bleibt vorhanden und wird beim hovern trotzdem angezeigt, wodurch sich das Problem einstellt, dass immer der falsche menu--container beim Hover über einen Menüpunkt eingelbendet wird.

    Ich denke, ich muss dem menu--container sagen, dass er auch nur angezeigt, bzw. sogar nur existieren soll (er darf ja auch nicht display none haben, sondern muss komplett verschwunden sein), wenn category_yes_no eine 1 hat.

    Ich bekomme es nicht hin ich habe schon viele Stellen in der Datei plugins/advanced_menu/index.tpl ausprobiert.

    Können Sie mir einen Tipp geben, wo/wie ich die zweite if-Abfrage einbauen muss, damit die Kategorie mit "1" ausgeblendet wird und vor allem natürlich auch der entsprechende menu--container der sonst beim hover aufgeht?
  • Hey Michael,

    hast du ein aktuelles Beispiel wo wir uns das Ganze anschauen können?

    Gruß
    Alexander
  • Ich habe ein Problem. Wenn ich Blöcke in der Less überschreibe verliert das advanced menü aber die komplette formatierung. In sources sind beide less files eingebunden (plugin Ordner / Eigenes Theme) aber es sieht so aus als würde die reihenfolge nicht stimmen. Erst Plug-In less und dann updatesichere Veränderung aus dem Theme Ordner. Was mache ich falsch?
  • Hey Markus,

    die Anpassungen machst du in dem Theme, d.h. wenn das Theme erst nach dem Plugins geladen wird, scheint alles korrekt zu sein.

    Du kannst einmal deine Theme.php prüfen ob $injectBeforePlugins auf true oder false steht.

    Im Prinzip muss das Theme immer nach den Plugins geladen werden, damit die Werte nochmal überschrieben werden können.

    Gruß
    Alexander
  • Hallo Alexander, ich möchte gerne Euer PlugIn "Conversion Header" anpassen. Ich benötige nur 2 Segmente a 50%, statt 3 Segmente a 33%. Du hast es weiter oben auch schon beschrieben, was ich aber leider nicht richtig nachvollziehen kann. Ich möchte ja nicht an dem Original-PlugIn ändern, sondern als override in meinem Theme. Du schreibst: "in dem Fall überschreibe ich die index.tpl und erweitere den Block frontend_index_top_bar_container.

    Wenn du das überschreiben willst, musst du nur die index.tpl im index Ordner von deinem Theme überschreiben und den Block entsprechend ersetzen.

    Bei Themes gibt es noch eine Einstellung wann die Plugin Themes geladen werden. Entweder vor und nach dem Theme selbst. https://developers.shopware.com/designers-guide/smarty/#inheritance-and-plugin-templates."

    Kannst Du das etwas näher erläutern. Momentan in das PlugIn ja über dem Block frontend_index_top_bar_container eingebunden.
  • Hey Dirk,

    genau, der Conversion Header erweitert den Block "frontend_index_top_bar_container". Wenn du jetzt das Conversion Header Plugin erweitern willst, musst du in deinem Theme ebenfalls diesen Block erweitern und deinen eigenen Code reinpacken. Du musst dabei aber den gesamten Code der zweite Blöcke reinpacken, d.h. du überschreibst den ganzen Block "frontend_index_top_bar_container" und erweiterst diesen nicht nur.

    Gruß
    Alexander
  • Hallo,

    danke für die gute Anleitung!

    Ich habe auch ein Theme von Views abgeleitet, möchte aber auch die Konfiguration im Backend anpassen. Konkret ist dort ein Auswahlmenü für Schriften, die ich durch eigene Schriften ersetzen möchte.

    Die Konfiguration befindet sich aber in einer PHP Datei. Gibt es einen Erweitern/Ersetzen Mechanismus wie für die TPL Dateien, oder muss ich eine komplette eigene PHP Datei erstellen und bei jedem Update von Views neu kopieren und anpassen?

    Gruß,
    Christian
  • Hey Christian,

    das freut mich!

    Die Konfiguration anzupassen ist leider nicht so einfach. Du müsstest ein eigenes Plugin schreiben, welches eben diese Werte erweitert.

    Du kannst auch wie du beschrieben hast nur die eine Datei neuschreiben. Das wäre allerdings nicht sicher vor Updates beim Plugin. Daher würde ich davon abraten.

    Es bietet sich auch an den Hersteller zu fragen ob er die Anpassungen in sein Plugin packt. Möglicherweise ist es für alle interessant!

    Gruß
    Alexander
  • Hallo Alexander,

    ich möchte gerne bei einigen Plugins updatesichere Anpassungen vornehmen, die jedoch im Shop 5.4.3 unter custom/plugins liegen, nicht unter engine/Shopware/Plugins.
    Wie muss man hier richtig vorgehen?

    z.B.
    /custom/plugins/SwagPaymentPayPalUnified/Resources/views/frontend/paypal_unified/plus/checkout/custom_shipping_payment/custom_payment_method.tpl

    Ich habe die Struktur nachgebildet unter: /themes/Frontend/MEINTHEME/frontend/custom/plugins/SwagPaymentPayPalUnified/Resources/views/frontend/paypal_unified/plus/checkout/custom_shipping_payment/custom_payment_method.tpl

    Und in der Datei custom_payment_method.tpl am Anfang geschrieben:
    {extends file="parent:frontend/custom/plugins/SwagPaymentPayPalUnified/Resources/views/frontend/paypal_unified/plus/checkout/custom_shipping_payment/custom_payment_method.tpl"}

    Wenn ich die Änderungen direkt im Plugin vornehmen funktioniert es, wenn ich dies durch meine Datei überschreiben lassen möchte dann nicht.

    Wie muss man richtig vorgehen?

    Ich bitte um Deine Hilfe, vielen Dank.

    Gruß Gunnar
  • Hi Gunnar,

    hast du schon eine Lösung dafür gefunden?
  • Hey Gunnar,

    ob es das Legacy oder das neue Plugin System ist spielt hier keine Rolle. Relevant ist der Pfad ab dem Views Verzeichnis. Dann solltest du dies eigentlich so überschreiben können:
    /themes/Frontend/MEINTHEME/frontend/paypal_unified/plus/checkout/custom_shipping_payment/custom_payment_method.tpl

    Beste Grüße
    Ewald
  • Hallo Alexander,

    ich möchte gerne bei einigen Plugins updatesichere Anpassungen vornehmen, die jedoch im Shop 5.4.3 unter custom/plugins liegen, nicht unter engine/Shopware/Plugins.
    Wie muss man hier richtig vorgehen?

    z.B.
    /custom/plugins/SwagPaymentPayPalUnified/Resources/views/frontend/paypal_unified/plus/checkout/custom_shipping_payment/custom_payment_method.tpl

    Ich habe die Struktur nachgebildet unter: /themes/Frontend/MEINTHEME/frontend/custom/plugins/SwagPaymentPayPalUnified/Resources/views/frontend/paypal_unified/plus/checkout/custom_shipping_payment/custom_payment_method.tpl

    Und in der Datei custom_payment_method.tpl am Anfang geschrieben:
    {extends file="parent:frontend/custom/plugins/SwagPaymentPayPalUnified/Resources/views/frontend/paypal_unified/plus/checkout/custom_shipping_payment/custom_payment_method.tpl"}

    Wenn ich die Änderungen direkt im Plugin vornehmen funktioniert es, wenn ich dies durch meine Datei überschreiben lassen möchte dann nicht.

    Wie muss man richtig vorgehen?

    Ich bitte um Deine Hilfe, vielen Dank.

    Gruß Gunnar
  • Hallo,
    ich habe die Schritte genau befolgt aber die Erweiterung {extends file="parent:frontend/plugins/advanced_menu/index.tpl"} funktioniert einfach nicht .

    In der Theme.php habe ich auch die Anweisung um das Theme nach den Plugins zu laden, protected $injectBeforePlugins = false;

    Shopware Version 5.4.5, kann es sein das sich da wieder etwas geändert hat?

    Vielen Dank für die vielen tollen Beiträge.
    Viele Grüße Christian
  • Hey Christian,

    welche Blöcke hast du überschrieben? Das "extenden" funktioniert nur, wenn du auch Blöcke überschreibst. Wenn du die Ganze Datei ersetzen willst, musst du das extends weglassen.

    Gruß
    Alexander
  • Wie funktioniert das ganze, wenn das Plugin selbst an einen bestehenden Block etwas anhängt (Smarty-Funktion "append")?
    Für einen Kunden sollen wir die Ausgabe des Plugins "Urlaubsmeldung, Globaler Hinweis, Kundeninformation auf Artikeldetailseite & Warenkorb" so anpassen, dass der Hinweistext nicht unterhalb des Konfigurators ist, sondern darüber.

    Das Plugin erweitert dazu den Block "frontend_detail_index_configurator" mittels "append" aus dem Template "frontend/detail/index.tpl". Die Ausgabe erfolgt somit nach den Konfigurator-Optionen:
    {extends file="parent:frontend/detail/index.tpl"}
    {block name='frontend_detail_index_configurator' append}
    ...
    {/block}

    Wie kann man das im Theme (es wird das Responsive Theme benutzt) überschreiben, ohne das Template des Plugins selbst umzuschreiben?
    Wenn man im überschriebenen Template "prepend" nutzt, lädt Shopware ja trotzdem das vom Plugin, was dazu führt, dass der Block 2x enthalten ist. In dem Fall werden beide oberhalb der Konfigurator-Optionen angezeigt. Es soll ja aber nur einmal angezeigt werden.
  • Hey Martin,

    das ist in der Tat etwas "tricky". Es gibt aber mehrere Moeglichkeiten.

    Generell sollte nicht mehr mit append und prepend gearbeitet werden. Shopware hat vor einiger Zeit empfohlen stattdessen {$smarty.block.parent} zu verwenden.

    Am einfachsten ist es natuerlich wenn du den Plugin Hersteller bittet das anzupassen und den Block im Backend konfigurierbar zu machen. Ist kein grosser Aufwand, aber fuer alle sehr hilfreich.

    Ansonsten kannst du den Code aus dem Plugin kopieren. Was natuerlich Probleme verursachen koennte wenn es Updates gibt. Da das Plugin aber nicht sehr komplex scheint, kann es durchaus sein, dass nicht viele Updates kommen werden. Sollte sich aber der Name der Variablen aendern bei einem Update, zerschiesst es dir dein Theme. Daher hier aufpassen bei Updates! Immer in einer Staging (Test) Umgebung.

    Ein etwas sauberer Weg bzw. ein Weg bei dem du weniger vom Plugin Hersteller abhaengig bist waere es einen uebergeordneten Block zu ueberschreiben und den ganzen Code zu kopieren aus dem Bare Theme, in deinem Fall "frontend_detail_index_buy_container_inner". Den Block wo sich das Plugin reinhaengt kannst du dann umbenennen und gleichzeitig einen leeren Block mit dem urspruenglichem Namen an die passende Stelle packen, damit sich das Plugin da einhacken kann.

    Gruß
    Alexander
  • Ich glaube eure Anleitung ist Falsch oder nicht mehr Aktuell. Ihr müsst zum überschreiben des advanced-menu Plugins anders Extenden. Zudem wird die Index.tpl nicht im advanced_menu Ordner angelegt, sondern im index Ordner.

    Richtig ist also, Im Ordner \frontend\index\ die Datei mit den Namen index.tpl anlegen und mit folgenden Inhalt befüllten.

    {extends file="parent:frontend/index/index.tpl"}
    {block name="frontend_plugins_advanced_menu_button_close"} {/block}
    {block name="frontend_plugins_advanced_menu_button_category"} {/block}

    Anschließend noch die Hintergrundfarbe der .button-container klasse anpassen. Hier kann die von euch vorgeschlagene Struktur beibehalten werden.
    Bei eurer Version blendet ihr via Less mit display: none; nur den button-container aus. Die Templatedatei ist bei euch ohne Wirkung, weil sie gar nicht greift und falsch abgeleitet ist. Erklärung das Advanced Menü wird hier zuerst initialisiert.
    engine\Shopware\Plugins\Default\Frontend\AdvancedMenu\Views\frontend\index
    Ihr seid aber nicht die einzigen die den Fehler machen. Der normale Anwender merkt davon sicher auch nichts, weil das Ergebnis ja trotzdem zustande kommt.
    Leider wird hier aber eine Unnötige Datenbankabfrage generiert da das Kategoriemenü via less nur ausgeblendet wird. Bei meiner Version wird der Close Button und das Kategoriemenü im button-container auch tatsächlich entfernt und nicht nur versteckt.
    Da es sich hier um ein Tutorial handelt wollt ich das die Leute das hier nicht gleich falsch lernen.

    Falls ihr noch fragen habt könnt ihr mich jederzeit kontaktieren.

    Mfg Daniel Bäcker


  • Hey Daniel,

    vielen Dank für dein Feedback! Ich habe den Blogpost etwas angepasst. Er ist leider nicht mehr aktuell gewesen (wie du schon angemerkt hast).

    Allerdings würde ich nicht in dem index Ordner die index.tpl erweitern, sondern tatsächlich den Code des Menüs in dem Ordner plugins/advanced_menu. Für Smarty macht das keinen großen Unterschied, es ist jedoch etwas sauberer, da die Anpassungen so getrennt nur für den Code des Plugins gelten und in einem größeren Theme nicht mit allgemeinen Theme Anpassungen in index/index.tpl zusammen geschmischt werden würden.

    Die Templatedatei wird jetzt korrekt überschrieben und der Name der Kategorie nicht mehr von Smarty verarbeitet.

    Ein Hinweis: Mit dem alten Code wurde zwar, wie du gesagt hast, der button-container nur ausgeblendet statt entfernt, allerdings wird aber keine zusätzliche Datenbankabfrage generiert, da die Daten bereits zur Verfügung stehen und von Smarty nur dargestellt werden. Daher ist es nicht so tragisch wenn der button-container nur ausgeblendet wird per Less anstatt, dass er gar nicht im HTML Code auftaucht.

    Vielen Dank für deinen Vorschlag und den Hinweis bzgl. der neueren Shopware Versionen.

    Gruß
    Alexander
  • Da hast du natürlich recht ;) und Übersichtlicher ist es auch. Daumen hoch und macht weiter so.
    Ich wollte hier nur drauf hinweisen das sich was geändert hat da hier im Normalfall ja eher Menschen vorbeischauen die etwas nachbauen wollen und die sind dann frustriert wenn’s dann nicht so klappt.
    Tutorials leben ja auch ein Stück vom Mitmachen.

    Kleiner Tipp noch, macht wenn ihr was Testet vor der Veröffentlichung noch einen kürztest wie zb.

    {block name="frontend_plugins_advanced_menu_button_close"} >>> 1234 TEST TEST >>> {/block}

    Manchmal hat man noch die alten Strukturen im Kopf. Wenn zb. >>> 1234 TEST TEST >>> nicht an der gewünschten stelle auftaucht, dann weis man gleich das sich das extending bzw. die Struktur was geändert hat . Shopware ändert ja hier alle Nase lang was.

    Ich habe zb auf meinem Docker Container immer eine aktuelle Kopie meines Templates mit Test Text. In der Templatebeschreibung meines Templates hinterlege ich dann Stichpunktartig alle angepassten Sachen des Templates + Erstelldatum und Shopware Version zum Zeitpunkt der Erstellung. So weiß ich dann später noch Bescheid.

    Der Vorteil, man muss dann nur bei einer neuen Shopware Version mit den Texthinweisen Aktivieren neu kompilieren und weis sofort wo sich was geändert hat. Und ihr könntet dann zb kurz ein Update Verfassen so bleibt alles schön uptodate

    Mfg Daniel Bäcker
  • Hey Daniel,

    vielen Dank für den Tipp und das Feedback :)

    Gruß
    Alexander
  • Guter Artikel!
    Ich stoße immer wieder auf Euch bei der Suche nach Shopware Anpassungen. Es gibt echt wenig gute Dokumentation und Best-Pratices, da könnte Shopware echt mal mehr tun!
  • Hey Andy,

    danke für die netten Worte! Wir unterstützen Shopware da gerne ;-)

    LG
    Marc
  • Hallo Alex,

    ich bin Neu bei Shopware 5 dabei.

    Meine dringende Frage ist...
    Wo finde ich auf meinem Rechner die Shopware Ordner in denen ich mein Theme verändern kann und welches eigentlich über FTP zu finden und zu steuern wäre?

    Ich möchte in eine tiefere Bearbeitung und Anpassung gehen als die normalen Konfigurationen übers Backend... nur fehlen mir alle Shopware Ordner auf dem PC.

    Viele Grüße
  • Hey Nadine,

    das kommt in der Regel darauf an wo du die Dateien lokal (auf deinem PC) abgelegt hast.

    Wenn dein Shop schon online ist, kannst du mit einem FTP Client (z.B. FileZilla) auf die Dateien auf deinem Server zugreifen und dort bearbeiten.

    Ansonsten musst du den Shop lokal installieren, bevor du etwas anpassen bzw. "sehen" kannst. Dazu kannst du den MAMP Blog Post durchlesen: https://www.8mylez.com/blog/shopware-5-lokal-mamp-pro/

    Gruß
    Alexander
  • Hallo Alexander,

    danke für die gute Erklärung.

    Womit ich mich schwer tue, ist wenn Plugins im Ordner
    /engine/Shopware/Plugins/Community/Frontend/PLUGINNAME/Views/frontend/index/templatedatei.tpl
    statt in Plugin/Default stehen.
    Ich möchte einen Teil eines offenen Plugins überschreiben/austauschen, aber dies nicht bei jedem Plugin-Update neu durchführen, also dies nicht direkt im Plugin, sondern im /themes/-Ordner.

    Nehmen wir an, die Plugin-Datei beginnt mit
    {extends file="parent:frontend/index/index.tpl"}

    Dazu meine Fragen:
    In welchem Pfad muss die .tpl-Datei stehen?
    /themes/frontend/THEMENAME/frontend/plugins/PLUGINNAME/index/index.tpl
    /themes/frontend/THEMENAME/frontend/plugins/index/index.tpl
    /themes/frontend/THEMENAME/frontend/index/index.tpl
    oder ein anderer Pfad?

    Wie muss die Erweiterungs-Zeile lauten?
    {extends file="parent:frontend/plugins/PLUGINNAME/index/index.tpl"}
    {extends file="parent:frontend/plugins/index/index.tpl"}
    {extends file="parent:frontend/index/index.tpl"}
    oder anders?

    Weitere Dateien, die im Plugin nur includet werden muss ich beim überschreiben dann ja auch includen (nur den file-Namen lassen oder zu includende Datei auch in den /themes/-Pfad kopieren ) oder durch andere im /themes/-Pfad ersetzen?

    Oder gibt es da einfachere Möglichkeiten einen Block in der Datei templatedatei.tpl welche in index.tpl includet wird (keine extends-Zeile), direkt zu ersetzen?

    Mit bestem Dank schon mal
  • Hey Hartmut,

    das Plugin in deinem Theme zu überschreiben ist in jedem Fall die richtige Entscheidung!

    Im Prinzip musst du die selbe Ordnerstruktur ab dem frontend Ordner des Plugins in deinem Theme nachbauen. Im Beitrag oben siehst du, dass das AdvancedMenu Plugin in dem Views/frontend Ordner noch einen advanced_menu Ordner hat. Daher muss dieser auch im Theme angelegt werden.

    Wenn dein Plugin, welches du überschreiben willst, keinen eigenen Ordner hat sondern aus dem frontend Ordner direkt in index oder ähnlich geht, dann musst du auch nur diesen Pfad nachbauen. Wichtig ist hierbei, dass die Struktur exakt die selbe ist (ab dem frontend Ordner).

    Dasselbe gilt für den extends Code. Du gibst quasi an, welche Datei du überschreiben willst. Dabei muss entsprechend der Pfad angegeben werden, wie er auch tatsächlich existiert.

    Wenn du extends benutzt, werden auch die weiteren includierten Dateien bei dir includiert, ausser du überschreibst den Blog selbst. Ansonsten musst du diese natürlich nochmal selbst includieren.

    Möglicherweise ist unser kleines Support Paket für dich interessant: https://store.8mylez.com/support-ticket-4h?c=11 Dann könnten wir uns das genauer anschauen und dir eine konkrete Lösung geben.

    Gruß
    Alexander
  • Zur Info an den Author: Bei mir kam gerade hier der Fehler: "Fehler beim Aufbau einer Datenbankverbindung" beim Aufruf dieser Seite.
  • Hallo b3wii,

    vielen Dank für den Hinweis.

    Wir sind dabei den Fehler zu finden und zu beheben. Es handelt sich dabei um Fehler beim Server selbst.

    Gruß
    Alexander
  • Wie kann ich plugin-templates überschreiben, wenn unter Views kein eigenes Verzeichnis für das plugin existiert, sondern alles direkt unter index abgelegt ist ?
    (wie es bspw. bei Deinem Conversion Header der Fall ist)
  • Hallo Mirko,

    in dem Fall überschreibe ich die index.tpl und erweitere den Block frontend_index_top_bar_container.

    Wenn du das überschreiben willst, musst du nur die index.tpl im index Ordner von deinem Theme überschreiben und den Block entsprechend ersetzen.

    Bei Themes gibt es noch eine Einstellung wann die Plugin Themes geladen werden. Entweder vor und nach dem Theme selbst. https://developers.shopware.com/designers-guide/smarty/#inheritance-and-plugin-templates.

    Gruß
    Alexander
  • Hallo Alex,
    prima....vielen Dank!!
    Habe das soweit nun im Testshop umgesetzt. Habe noch folgende Frage.

    1) Ist es möglich die Bilder vor dem Katergorie text zu setzten? Zurzeit werden diese über den text angezeigt.
    2) Wird hier ein bestimmtes Bild Format bevorzugt? Also .jpg oder .png oder werden alle Formate unterstützt.

    Danke für Deine zeit :-)

    Gruß
    Josef
  • Hallo Josef,

    1) das Bild wird in Zeile 29 gesetzt, d.h. du kannst es auch unter dem Link positionieren: "gist.github.com/8mylez/fedbcb3842b56043b6d0d668d3782293#file-index-tpl-L29"

    2) Es werde alle zulässigen Formate unterstützt die du im Media Manager einbinden kannst im Backend. Generell empfehle ich da auf die Größe des Bildes zu achten, .jpg sind meistens kleiner, wenn es keinen transparenter Hintergrund sein muss.

    Gruß
    Alexander
  • Hallo Josef,

    mit unseren Blogbeiträgen möchten wir euch helfen. Aber nicht eure Arbeit übernehmen. Daher würde ich dich bitten es selbst zu versuchen!

    Dazu ist der Blog schließlich da. Wir wollen gemeinsam an euren Shopware Shops arbeiten.

    Gruß
    Alexander
  • Hallo Alex,
    habe da mal eine Frage zur Anpassung des Erweiterte Menüs. Besteht die Möglichkeit vor den einzelnen Kategorie Namen eine kleine Grafik zu
    positionieren? Also so wie hier unter der Kat "Online Shop"

    www.globetrotter.de/
  • Hallo Josef,

    das sollte kein Problem sein.

    Wie stehen die Icons zur Verfügung? Sind es https://fontawesome.com/icons?from=io? Oder Shopware Icons?

    Oder generell nur Bilder?

    Gruß
    Alexander

Was denkst du?

Beliebt

Was du über die Shopware 5 Theme Struktur wissen musst und wie du ein eigenes Template erstellst
Social Media Icon mit Link im Footer
Shopware Theme: Eigenes Listing Layout erstellen
Logo Größe mit Less für Shopware 5 anpassen
Die größten Fehler bei der Entwicklung eines Shopware 5 Themes

Sicher Dir die besten Shopware 6
Tipps & Tricks

Trag Dich ein und Du erhältst unser Shopware 6 Whitepaper kostenlos!
Trag dich für unseren Newsletter an, im Anschluss erhältst Du das Whitepaper. 

Mit dem Abschicken Deiner Daten akzeptierst Du unsere Datenschutzerklärung.

Entdecke unsere ebooks

Unsere Standorte

Zentrale 

Technologiepark 23
33100 Paderborn


Leipzig
Bernhardstraße 34
04315 Leipzig

Kontakt

Über 8mylez

✓ 38 Mitarbeiter

✓ Shopware Gold Partner

✓ 40.000+ Plugin Downloads

✓ 160+ betreute Shops

✓ Full-Service Shopware Agentur

✓ 70 Shopware Videos auf Youtube

✓ Alle Shopware Zertifizierungen

Social


Unsere Partner
© 2023 by 8mylez GmbH //  Impressum + Datenschutz