In diesem Teil erklären wir die ersten Schritte mit Smarty. Dafür sollte Euch das Vererbungssystem von Shopware bekannt sein, das in dem letzten Teil erklärt wurde.
Was macht diese Smarty Blöcke so besonders?
Man kann diese ersetzen, verändern, erweitern und auch den Inhalt löschen.
Alle Anpassungen müssen in unserem eigenen Theme gemacht werden.
Wie im ersten Teil beschrieben, leiten wir von den originalen Shopware Dateien ab und erhalten damit die Updatefähigkeit.
Als Beispiel wollen wir diese Template Datei bearbeiten:
/themes/Frontend/Bare/frontend/listing/index.tpl
Dafür gehen wir in unser Theme und erstellen diese Datei:
/themes/Frontend/MEIN_THEME/frontend/listing/index.tpl
Da wir prinzipiell erstmal die Datei gleich behalten möchten leiten wir unser Template von der Originalen ab.
{extends file='parent:frontend/listing/index.tpl'}
Mit dem parent Befehl verweisen wir auf die Elterndatei, die sich in diesem Fall standardmäßig im Bare Theme auffinden lässt.
Wenn wir das ganze speichern und im Shop Backend das Theme neu kompilieren, sehen wir keine Veränderung.
Das liegt daran, dass wir in unserer Template Datei nur die Originaldatei laden lassen.
Jetzt kann es losgehen mit dem Verändern.
Dann öffnen wir mal die Originale listing/index.tpl aus dem Bare Theme und schauen uns die Blöcke an.
Sehen wir uns mal diesen Block an:
{* Topseller *}
{block name='frontend_listing_index_topseller'}
Der Kommentar über dem Block verrät uns, dass es sich um die Topseller handelt.
Dort werden dann weitere Dateien geladen wie die Einkaufswelt und unsere Artikel.
In unsere "listing/index.tpl" fügen wir nun den Block ein und schreiben einfach als Inhalt in den Block "Die Topseller sollen raus.".
{* Topseller *}
{block name='frontend_listing_index_topseller'}
Die Topseller sollen raus.
{/block}
Das ganze sollte jetzt so aussehen:
Hier kann man nun einfügen, was man möchte, ob es ein eigenes Bild oder ähnliches ist.
Manchmal wollen wir etwas hinzufügen und das Original beibehalten. Dafür gibts es die 2 Funktionen "prepend" und "append".
Es gibt noch eine weitere Möglichkeit, und zwar den Befehl "{$smarty.block.parent}".
Dieser lädt den bisherigen Block Inhalt.
Dies hat den Vorteil, dass man sich mit anderen Plugins, die auch diesen Block nutzen, nicht in die Quere kommt. Man sollte im Theme am besten mit dem "{$smarty.block.parent}" arbeiten.
Wenn man etwas vor dem eigentlichen Inhalt haben möchte, schreibt man es vor den parent Block.
{* Topseller *}
{block name="frontend_listing_index_topseller"}
Vor dem Topseller Block.
{$smarty.block.parent}
{/block}
Das Ganze nach dem Topseller Block mit dem "{$smarty.block.parent}" Befehl:
{* Topseller *}
{block name="frontend_listing_index_topseller"}
{$smarty.block.parent}
Nach dem Topseller Block.
{/block}
Hier ist es so Simpel wie es scheint... Der Block wird einfach leer gelassen.
{* Topseller *}
{block name="frontend_listing_index_topseller"}
{/block}
Mit dem Shopware Profiler von Shyim kann man ganz genau sehen, wo ein Block anfängt und aufhört.
Dadurch ist das Suchen von dem richtigen Smarty Block sehr einfach.
So sieht das ganze dann in der Developer Bar von z.B. Google Chrome aus.
Unsere Standorte
Zentrale
Technologiepark 23
33100 Paderborn
Leipzig
Bernhardstraße 34
04315 Leipzig
Kontakt
E-Mail: support@8mylez.com
Telefon: +49 (0) 5251 284 710
Shopware Dienstleistungen
Ü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
Thomas
danke für die tolle Anleitung, das hat mir sehr weitergeholfen. Ich wollte jetzt ein wenig am Footer rumspielen und auch da einiges testen, aber wenn in der footer.tpl {$smarty.block.parent} einsetze, lädt er meine Seite nicht mehr. Lösche ich es wieder raus und schreibe nur Text rein, dann läuft es ganz normal. Greift diese Variable dort nicht?
Gruß
Thomas
Ewald Gering
extendest du die Footer Template auch?
Viele Grüße
Ewald
Thomas
das war es, danke. Da habe ich mich zu sehr an Deine Anleitung gehalten und da ging das unter.
Viele Grüße
Thomas
David Z.
Danke für das Tut, wenn ich das richtig sehe ist das hier aber falsch:
{extends file=parent:'frontend/listing/index.tpl'} und müsste so lauten:
{extends file='parent:frontend/listing/index.tpl'}
Das Hochkomma ist an der falschen Stelle.
Ewald Gering
da hast du recht! Ist nun angepasst.
Vielen Dank & viele Grüße
Ewald
Andreas
ich bin gerade im SW Forum über einen interessanten Beitrag gestoßen, in dem davon die Rede ist, dass SW inzwischen davon abrät "append" und "prepend" zu verwenden.
Siehe hier:https://forum.shopware.com/discussion/45760/google-kundenrezensionen-einbinden#Comment_193959
Könntest du dein Tutorial dahingehend bitte anpassen, damit niemand erst die falsche Syntax lernt.
Und dann bist mir noch im Abschnitt "Block erweitern" ein Copy-and-Paste Fehler aufgefallen. "Vor dem Topseller Block." müste heißen "Nach dem Topseller Block."
Ansonsten ein Top-Beitrag :-)
Ewald Gering
es scheint viele Probleme mit Plugins gegeben zu haben. Daher ist dies für das Theme die bessere Methode.
Vielen Dank für die Aufmerksamkeit :) Ich habe das Tutorial diesbezüglich up to date gebracht.
Dominik
kurzer Tipp: Grundsätzlich sollte man in den Templates ja eher nicht prepend/append nutzen, weil dies die Erweiterbarkeit durch Plugins stört. Hier würde ich immer empfehlen, im Elternelement des zu ergänzenden Blockes mit {$smarty.block.parent} zu arbeiten :)
Ewald Gering
vielen Dank für den Tipp. Die mögliche Problematik mit anderen Plugins habe ich wohl übersehen. Ich habe die Variante auch mal hinzugefügt.
Viele Grüße
Ewald
Theming: Topbar entfernen - 8mylez.com
Michael K.
Viele Grüsse
Ewald Gering
danke für den Hinweis. Jetzt ist es wieder das Listing :)
Viele Grüße,
Ewald
Was denkst du?