Thomas Maier | Magento & WordPress Develover post@webzunft.de | +49 162 9313 708

Antworten auf die Fragen – nicht nur meiner Kunden 

RSS
Home Magento Magento Theme-Hierarchie – Vererbung mit bis zu 6 Themes

Magento Theme-Hierarchie – Vererbung mit bis zu 6 Themes

Ausgestellt am 22. Dezember 2012 von in Magento

Es ist eine der großen Stärken von Magento, dass viele Dateien nicht einfach überschrieben werden, wenn man eine Änderung benötigt, sondern sie durch eine Hierarchie und Vererbung erweitern kann. Das ist nicht nur bei Modulen der Fall, sondern auch bei Themes. Dabei gibt es eine Tiefe von bis zu 6 Hierarchieebenen, die ich im Folgenden kurz beschreibe.

Hierarchie von Magento-Themes

Hier die Hierarchie in Kurzform:

Base > Paket > Standard > Theme > allgemeine Layoutänderungen > Kategorie-/Produktseiten

Diese Hierarchie sorgt dafür, dass zunächst die Themes am rechten Ende auf vorhandene Templates geprüft werden. Sind diese nicht vorhanden, so schaut Magento in der nächsthöheren Ebene nach der entsprechenden Datei.

So ist es leicht möglich, ein eigenes Theme zu erstellen, dass ein vorhandenes nur in geringen Abweichungen ändert. Wenn ich also ein Weihnachtstheme einstelle, dann muss ich hier nicht sämtliche Dateien für das Theme hinzufügen, sondern nur die geänderten Dateien. Das bezieht sich sowohl auf Template-Dateien in app/design/frontend als auch CSS, JavaScript und Bilder in skin/frontend.

Über eine Theme-eigene local.xml im layout-Verzeichnis ist es zudem möglich, weitere Änderungen zu ergänzen, wie etwa eine zusätzliche CSS-Datei oder Anweisungen für Blöcke, etc.

base

Das base-Theme liegt in app/design/frontend/base/default. Es ist das von Magento bereitgestellte Theme und damit der oberste Fallback. Wenn also eine Datei in keinem anderen Theme und auch nicht hier gefunden wird, dann haben wir ein Problem. Von Hause aus sind hier aber alle Dateien vorhanden.

Ein Blick in System > Konfiguration > Design im Magento-Admin

In jedem Tutorial zu Magento-Themes steht, dass das base-Theme nicht überschrieben werden darf bzw. die Dateien direkt bearbeitet werden dürfen. Diesem Rat ist unbedingt zu folgen, da das Theme sonst seinen Status als zuverlässiger Fallback verliert. Dank der Hierarchie von Magento-Themes ist das aber auch nicht notwendig.

Paket-Default-Theme

Bei dieser Ebene handelt es sich um eine in vielen Anweisungen vergessene Hierarchie. Das liegt wahrscheinlich daran, dass sie im Standard leer ist und nicht explizit eingestellt werden muss.

Unter System > Konfiguration > Design müssen wir das Paket definieren. Hier ist bei einer neuen Installation default vorgewählt.

Ein Blick in den Ordner app/design/frontend/default zeigt, dass hier schon andere Themes liegen. Bei umfangreichen Shops mit eigenem Design lege ich daher zur besseren Übersicht ein eigenes Paket, häufig mit dem Namen des Shops, an. Das ist im ersten Schritt praktisch nicht mehr als ein neuer Order.

In diesen Ordner packen wir jetzt unser eigenes Theme. Das könnte z.B. das Magento Blank Theme oder ein gekauftes Theme sein. Den Ordner mit diesem Theme nennen wir jetzt default. Findet Magento in einem zugewiesenen Theme nicht das gewünschte Template, so sucht es im default-Ordner des Pakets.

Entsprechend gilt das geschriebene natürlich auch für die Struktur im skin-Verzeichnis.

Standard-Theme

Die kommerziellen Magento-Themes, mit denen ich bisher gearbeitet habe, empfahlen immer, das jeweilige Theme als Standard einzustellen. So ließe es sich durch eigene Einstellungen noch modifizieren.

Wie oben beschrieben, kann das grundlegende Theme auch als default angelegt werden. Wenn dem so ist, dann könnten stattdessen die eigenen Anpassungen als Standard-Theme eingestellt werden.

Theme

Das Optionpanel im Backend lässt nun noch die Zuordnung von Themes zu bestimmten Themen zu. Das entspricht auch bei mir in den meisten Fällen dem Standard-Theme. Wer diese Möglichkeit der Trennung dennoch zu nutzen weiß, wird für sie dankbar sein.

Die Theme-Ebene nutze ich z.B. für kleinere Änderungen oder Tests.

spezielle Layoutänderungen

Als letzte Hierarchie ist es noch möglich unter System > Design temporäre Layoutänderungen einzustellen. Dabei wird die zuvor eingestellte Hierarchie schlichtweg erweitert. Praktisch ist das z.B. bei Themes, die die jeweilige Jahreszeit widerspiegeln. Hierzu bietet Magento auch die Möglichkeit, das Datum einzustellen, von wann bis wann das gewählte Theme gültig ist.

Ähnlich verhält es sich mit Themes, die bei einem Produkt oder einer Kategorie eingestellt werden können. Ein eigenes Theme für jede Kategorie oder Produkt wäre im normalen Shop vielleicht etwas zuviel des Guten, aber ich hatte schon Kunden, bei denen ein besonderes Theme für einzelne Produkte oder Kategorien genutzt werden sollte.

Hier ist es noch gut zu wissen, dass die speziellen Layoutänderungen von Produkten und Kategorien gegenüber den allgemeinen Layoutänderungen unter System > Design bevorzugt werden. Die allgemeinen Layoutänderungen reihen sich dann ein und ermöglichen damit sogar ganze 6 Hierarchiestufen. Das ist deutlich mehr, als die meisten Shops benötigen werden, aber das Wissen um diese Möglichkeit hilft bei der Umsetzung ungemein. So erspart es den Einbau manueller Weichen, komplexer produktbasierter Bezeichnungen im CSS oder Prüfungen auf eine bestimmte Kategorie oder ein Produkt.

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
1 Comment  comments 

Ein Antwort

  1. […] befindet. Erben wir von einem Theme, das wir nicht verändern wollen oder können (z.B. das base-Theme) so sollten wir die folgenden Änderungen in einer layout-Datei eines Child-Themes eintragen, z.B. […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.