Vererbende Templates (bzw. Templates) in Shopware

Shopware bietet die Möglichkeit, den eigenen Shop an die individuellen Bedürfnisse anzupassen und ein eigenes Layout als Template umzusetzen. Dieser Grundgedanke findet sich in vielen Aspekten der beliebten E-Commerce Lösung wieder. Viele Bereiche lassen sich bereits in der Administrationsoberfläche anpassen. Technisch versierte Nutzer haben oftmals den Wunsch, auch tiefergehende Anpassungen vorzunehmen, ohne gleich eine Shopware Agentur beauftragen zu müssen.

 

Template-Struktur: Ein Kurzabriss

Bevor wir über die das eigentliche Thema des Blogbeitrags sprechen, soll kurz eine gemeinsame Wissensbasis geschaffen werden. Jeder Leser, der die Struktur des Templates-Verzeichnisses bereits kennt, kann diesen Abschnitt überspringen.

Im Verzeichnis „themes/frontend“ werden alle Templates, die die Kundenansicht des Shops betreffen, gespeichert. Jeder Ordner steht dabei für ein eigenes Template. Im Auslieferungszustand sind dies die Ordner „Bare“ und „Responsive“. Letztlich finden Sie jeden dieser Ordner, der die Mindestanforderungen für ein Template erfüllt, auch im Backend wieder (Einstellungen -> Template Manager).

Weitere Information zum Aufbau einzelner Templates entnehmen Sie bitte der Shopware-Dokumentation 

 

Wie hängen Bare & Responsive zusammen

Mit dem Bare-Template bietet Shopware eine HTML-Struktur an, welche ohne schickes Styling oder erweiterte JavaScript Funktionalität kommt. Diese fehlenden Bausteine werden durch das Responsive-Template ergänzt.

Schaut man sich die Template.php des Responsive-Templates an, so entdeckt man in Zeile 38:

protected $extend = 'Bare';

Diese Angabe führt dazu, dass das Responsive-Template die HTML-Struktur sowie das JavaScript und CSS des Base-Templates erbt - auch wenn die beiden letztgenannten nur rudimentär enthalten sind. Dies bedeutet, dass alle Ressourcen aus dem Bare-Template auch dem Responsive-Template zur Verfügung gestellt werden.

 

Warum hat Shopware nicht nur ein Template?

Bei der Umsetzung dieses Ansatzes hatte Shopware Nutzergruppen im Auge, welche nicht den im Standard genutzten Technologie-Stack nutzen möchten. Dies bietet die Freiheit, andere Technologien zu nutzen, ohne das von Grund auf ein eigenes Markup erstellt werden muss.

 

Wie kann ich mir dieses Konzept für meine Änderungen zu Nutzen machen?

Der Kernaspekt der Vererbung von Templates ist das Bereitstellen von vorhandenen Ressourcen, mit der Möglichkeit diese zu überschreiben. Dies bedeutet, dass man auf ein vorhandenes Template aufbauen und eigene Änderungen unabhängig von diesem Template vornehmen kann. Dies bedeutet weiterhin, dass bei einem Update des vererbenden Templates Änderungen in einem erbenden Template nicht betroffen sind.

 

Beispiel:

Shopware updated in einer neuen Version sein Bare-Template an einigen Stellen, welche durch lokale Änderungen zuvor angefasst wurden.

 

1. Fall: lokale Änderungen ohne erbendes Template

Alle Änderungen in Dateien die von Shopware geupdated werden, werden überschrieben und gehen verloren.

 

2. Fall: lokale Änderungen im erbenden Template

Alle lokalen Änderungen überschreiben die Definitionen des Bare-Templates. Bei Update des Bare-Templates werden die Dateien im erbenden Template nicht ersetzt. Lokale Änderungen behalten somit ihre Wirksamkeit.

 

Gilt dies nur für das Erben von Bare und Responsive?

Generell kann in Shopware von jedem Template geerbt werden. Dies bedeutet, dass sie auch von einem stark abweichenden Template, welches zum Beispiel durch eine Agentur erstellt wurde, erben können.

 

USE CASES

Wir empfehlen unseren Kunden stets in erbenden Templates zu arbeiten, da dies nicht nur zur Updatesicherheit beiträgt, sondern auch das Zurückbauen erleichtert und die Kompatibilität mit Plugins und Erweiterungen wesentlich einfacher zu gewährleisten ist.

Der wohl am häufigsten auftretende Anwendungsfall wird der Betrieb von Subshops sein, welche ein gemeinsames Template mit nur jeweils geringen Anpassungen teilen. Shopware erlaubt die einfach Einrichtung von mehreren Shops in einer Installation, die dank der Vererbung in den Templates auch optisch einfach modifiziert werden können.

Ein weiterer Use-Case für die Nutzung von erbenden Templates sind saisonale Änderungen. Ein Beispiel wäre es, dem Header ein sommerliches Feeling während der sonnenreichen Monate zu geben. Ist dies in einem erbenden Template umgesetzt, so kann man nach Ende des entsprechenden Zeitraums das Basis-Template erneut zuweisen und alles ist wieder beim alten.

 

Was bedeutet das für Shopware Agenturen?

Selbstverständlich achten wir bei all unseren Projekten auf korrekte Vererbung bis ins kleinste Detail. Dies ist zwar nicht selten der komplexere und aufwändigere Weg, bringt aber dafür im Nachgang, wie oben bereits ausgeführt, eine große Menge an Vorteilen für die nachhaltige und langfristige Betreuung eines Shopware Shops mit sich. Auch unsere Plugins, die wir im Shopware Store anbieten, bauen darauf, dass in den Shops, die diese Erweiterungen einsetzen, sauber vererbt wird - nur so lässt sich sicherstellen, dass innerhalb des Ökosystems Shopware eine möglichst hohe Kompatibilität aller Komponenten verschiedener Parteien gegeben ist.