Shopware – Eigenes Theme erstellen

Im folgenden Artikel betrachten wir einmal, wie ein eigenes Shopware Theme angelegt und gestaltet werden kann. Die Idee dabei ist, dass man nicht alle sichtbaren Elemente selbst neu erzeugt und gestaltet, sondern vielmehr auf die bestehenden Bare/Responsive Themes zugreift. Der Vorteil: Man ändert einfach selbst die Teile eines Themes, die einem nicht passen und übernimmt den Rest um Arbeit zu sparen.

Was dafür nötig ist gehen wir Schritt für Schritt durch.

Inhalt

Anlegen eines eigenen Themes

Um unser eigenes Theme anzulegen loggen wir uns im Backend unseres Shops ein und öffnen den Theme Manager “Einstellungen” -> “Theme Manager

Uns fallen dort zunächst die beiden vorhandenen Themes Bare und Responsive auf. Diese werden wir später indirekt nutzen. Über den Button “Theme erstellen” öffnen wir ein Fenster, in dem wir angeben, dass wir vom Responsive Theme ableiten. Zusätzlich tragen wir noch ein paar allgemeine Informationen wie Name, Beschreibung etc. ein. Anschließend sollten wir folgenden Stand haben:

Bild des Theme Managers in Shopware

Speichern wir das ganze, reiht sich unser eigenes Theme bei den anderen beiden ein. Damit sind wir auf Seiten Backend vorerst fertig!

Arbeitsumgebung und Dateistruktur

Unser Theme verändern wir später über HTML und CSS. Für ein angenehmes Arbeiten empfiehlt sich die Nutzung eines passenden Texteditors. Im Folgenden liste ich einmal ein paar gelungene Editoren auf:

  • Notepad++ (Windows)
  • TextMate (Mac)
  • PhpStorm (Mac, Windows, Linux)
  • Visual Studio Code (Mac, Window,s Linux)

Diese Editoren verstehen die meisten Codesprachen und machen die Arbeit übersichtlicher.

Erklärung für ableiten von Themes

Bevor wir uns jetzt ans Werk machen betrachten wir einmal die Dateistruktur. Es ist dabei sehr wichtig, dass keine direkten Änderungen am Bare/Responsive Theme vorgenommen werden! Vereinfacht gesagt gibt das Bare Theme die Elemente der Website vor, das Responsive Theme sorgt (wie es der Name sagt) für das Responsive Verhalten der Website. Unser Ziel ist es für unser eigenes Theme die Datei-Struktur des Bare Themes beizubehalten.

Als Ausgangspunkt für Dateipfade legen wir den Ordner fest, in dem sich unser Shop befindet.

Unser Theme finden wir unter shoporder/themes/frontend

Ableiten und Erweitern

Um jetzt eine Änderung an unserem Theme vorzunehmen müssen wir eine Datei anlegen und uns entscheiden, ob wir das abgeleitete Theme erweitern möchten oder lieber alles selbst machen möchten.

Beispiel 1: extend

  • Der Header wird in der Datei shop-navigation.tpl definiert. Diese Datei müssen wir selbst anlegen.
  • Der Pfad dafür lautet: shoporder/themes/Frontend/"Unser-Theme"/frontend/index
  • Im Ordner des Bare-Themes kann man nachschauen, welche Dateien es gibt und wie diese aufgebaut sind. Als Erinnerung: Keine Änderungen an den Dateien dort vornehmen!
  • Der Pfad im Bare-Theme verläuft dann parallel: shoporder/themes/Frontend/Bare/frontend/index
  • Öffnen der Datei im eigenen Theme

Shopware nutzt in den Dateien Smarty HTML Blöcke für die Elemente. Wenn wir unsere Datei um eine Extend Zeile ergänzen werden die ursprünglichen Elemente des Bare-Themes beibehalten. Wir können diese Elemente aber Überschreiben oder neues hinzufügen und bearbeiten. Wir müssen einfach nicht alles selbst von Hand anlegen.

Zur Verdeutlichung: Schreiben wir folgende Zeile in unsere Datei und nutzen unser Theme passiert nichts, da alle Elemente des Bare Themes genutzt werden:

{extends file="parent:frontend/index/shop-navigation.tpl"}

Schreiben wir diese Zeile nicht in unsere Datei fehlt im Frontend der Header.

Beispiel 2: parent

Durch Smarty können wir das Elternobjekt eines Blocks ansprechen und dessen Inhalt nutzen. Das hat für uns den Vorteil, dass wenn wir einen bestehenden Block anpassen möchten uns Arbeit sparen. Die entsprechende Zeile lautet dabei:

{$smarty.block.parent}

In der shop-navigation.tpl sieht das dann etwa so aus:

{block name='frontend_index_search'}

*Ein eigenes Element kann vor dem Inhalt des Eltern-Objekts platziert werden*
{$smarty.block.parent}

*Oder nach dem Inhalt des Eltern-Objekts*

{/block}

Anordnen der Elemente mit LESS

Während Smarty für HTML genutzt wird setzt Shopware auf LESS für CSS. Die Ordnerstruktur orientiert sich diesmal am Responsive Theme und nicht mehr Bare.

Um mit der Anpassung von Elementen zu beginnen müssen zwei Dateien angelegt werden:

  • Wir navigieren zu folgendem Pfad: shoporder\themes\Frontend\"Unser-Theme"\frontend\_public\src\less
  • Wir legen die erste Datei namens all.less an.
  • Wir legen die zweite Datei namens navigation.less an.

In der Datei all.less ergänzen wir lediglich die Zeile:

   @import 'navigation';   

Diese Datei ist lediglich für den Import anderer LESS Dateien zuständig.

 

Wer weitreichende Theme-Änderungen plant sollte die Datei-Struktur des Responsive-Themes übernehmen. Für unsere Zwecke hier ist das aber nicht nötig.

Beispiel 3: LESS einsetzen

Als simples Beispiel wähle ich das Zentrieren des oben erstellten Slogans. Dafür öffnen wir unsere navigation.less

Wir ergänzen die folgenden Zeilen:

.shop--slogan {
  position:relative;
  right:60%;
}

Zusammenfassend sollte das Endergebnis so ausschauen:

Theme kompilieren

Der letzte Schritt führt uns wieder zurück ins Backend. Wir starten den Theme Manager und wählen unser Theme dort aus. Nach einem Klick auf Theme zuweisen öffnet sich ein Fenster und wir können unser Theme kompilieren. Das müssen wir nach allen größeren Änderungen durchführen um im Frontend korrekte Anzeigen zu bekommen. Damit haben wir auch erfolgreich unser erstes Theme erstellt.

Fazit

Ich hoffe die Beispiele waren einfach und gut genug erklärt um die erste Schritte in Richtung eigenes Theme zu unterstützen. Haben Sie vielleicht Fragen oder benötigen Unterstützung bei Ihrem Shop? Kontaktieren Sie mich einfach – kostenlos und unverbindlich.