Magento – Eigenes Design in eigenes Template und nicht default oder base!

Da ich doch häufiger auf diesen Punkt angesprochen wurde, schreibe ich ein ganz kurzes “How-To” für das Thema “Eigenes Template / Eigenes Design”.

Alle Dateien, die den Shop bzw. die Magento Seite so aussehen lassen, wie sie aussieht, sind in zwei Hauptordnern zu finden:

/app/design/frontend/

und

/skin/frontend/

Von hier aus geht es dann in die Unterschiede.

Jedes eigene Template wird auf diese beiden Ordner verteilt. Allgemein und oberflächlich kann man sagen, dass im APP Ordner die Rezepte stecken und im SKIN Ordner die Zutaten. Die Zutaten sind in diesem Fall z.B. Bilder und die Rezepte die Dateien, die mitteilen, wo die Bilder und Strukturen angezeigt werden.

Als Beispiel: Wir haben ein Template “Natur” erstanden und laden dieses in unseren Shop hoch. Standardmäßig würde es in den Ordnern dann so aussehen:

/app/design/frontend/default/Natur/

und

/skin/frontend/default/Natur

Nun ist es wichtig zu wissen, dass es in Magento ein eigenes Standardtemplate oder eigentlich mehrere Standardtemplates gibt, die aufeinander aufbauen. Das erste Standardtemplate findet sich in

/app/design/frontend/base/default/

und

/skin/frontend/base/default/

Das zweite Standardtemplate in den Ordnern

/app/design/frontend/default/default/

und

/skin/frontend/default/default/

So, und nun kommt der wichtige Punkt:

Wird eine Datei im eigenen Template “Natur” nicht angesprochen, die aber benötigt wird, schaut Magento, ob es diese Datei 1. im default/default/ Verzeichnis gibt. Gibt es diese dort nicht, schaut es in base/default/. Gibt es diese dort auch nicht, gibt es einen Fehler.

Somit werden so lange die base/default/ bzw. default/default/ Dateien verwendet, so lange es KEINE anderen Informationen aus dem eigenen Template “Natur” gibt.

Gibt es z.B. eine Datei page.xml im Ordner base/default/layout aber keine in den anderen beiden Templates (default/default/ und default/Natur/) wird diese verwendet. Möchte man aber nun für sein “Natur” Template eine Änderung an dieser Datei machen, KÖNNTE man sie direkt im Ordner base/default/layout machen. Dies würde aber heißen, dass auch ALLE anderen Templates, die auf die page.xml zugreifen diese Änderung mitbekommen. Somit ist es immer RATSAM, die zu verändernde Datei zu kopieren (NICHT verschieben) und in den eigenen Template Ordner zu packen. Dort werden dann die Änderungen nur für das eigene Template durchgeführt und nicht für alle anderen. In unserem Fall wäre dies also so:

Die Datei page.xml aus dem Ordner

/app/design/frontend/base/default/layout

kopieren in den Ordner

/app/design/frontend/default/Natur/layout

und dort verändern.

Wichtig ist immer die Ordnerstruktur einzuhalten. In unserem Fall wird das base durch default ersetzt und das default durch Natur. Die Unterordner korrespondieren dann immer.

Sollte dann mal im schlimmsten Fall etwas komplett falsch laufen, kann man die fehlerhafte Datei im eigenen Template schnell wieder löschen und dann greift Magento auf die Standardtemplates durch.

Published by Covos

Seit 2009 arbeite ich nun intensiv mit Magento. Begonnen habe ich mit der Erstellung und dem Betrieb von B2C-Shops. Ausgeweitet wurde dies durch meine Tätigkeit im Logistik-Sektor. Hieraus entstanden erste spezialisierte B2E-Systeme. Heute arbeite ich tag-täglich mit spannenden B2C-, B2B- und B2E-Projekten und berichte in diesem Blog über Herausforderungen und gebe Insider-Tipps.

6 comments on “Magento – Eigenes Design in eigenes Template und nicht default oder base!”

  1. 1.7.0.2
    Leider wird das Theme nicht im Backend bei Package/Theme Options nicht mit angezeigt :0

    Ich denke in der Package.php was extra verwurstelt wurde!
    Mage::getModel(‘core/design_source_design’)->getAllOptions() frisst nicht alle Themes 🙁

    1. Hallo F.U.T.Z.,

      was genau bedeutet “nicht angezeigt”? Wenn man den entsprechenden Template Ordner im Gestaltungsbereich eingibt (also Design > Paket und Design > Themes)? Dann wird (nach Cache Reload) das Template im Frontend nicht angezeigt?
      Wurde in der package.php “rumgespielt” oder ist die noch original?

  2. Also es gibt ja im Backend z.b bei Catalog/Categories unter hm äh DESIGN glaub ich die möglichkeit abeichungen anzugeben (mittels select option auswahliste darin war nur MeinPaket und drunter das default Theme). Nu hab ich erkannt das im Adminbereich ja auch nur in adminhtml das fallback der Themes greift . Daher habe ich auch dort ein Theme/skin etc angelegt und es funktioniert nun auch bei CMS/Widget !!
    Das ist wohl ein denkfehler bei der magento entwicklung oder halt nur so gelöst.
    Darauf bin ich gekommen weil in der Design.php – Mage_Adminhtml_Block_Cms_Page_Edit_Tab_Design –
    Mage::getModel(‘core/design_source_design’)->getAllOptions()
    geladen wird und die getAllOptions() in ähh /htdocs/app/code/core/Mage/Core/Model/Design/Package.php liegt, hilfe da hat sich einer ausgetobt und man erkennt in getSkinBaseDir() so durch var_dump($baseDir), vor dem return einfügen, das immer die URL’s adminhtml/default/eigenestheme versucht wird. Na ja bei mir gehts nun. Und die Package.php hat wirklich keinen Fehler eingebaut.

  3. Vielen Dank für diesen Artikel. Ich hatte heute das Problem das mein eigenes Template nach dem Magento update nicht mehr angezeigt wird. Stattdessen kommt das Standard Layout. Werde heute mal deine Tipps ausprobieren. Habe noch ein Backup vor dem update. Einige Bereiche hatte ich ersetzt aber es hat nichts gebracht.

Leave a Reply to F.U.T.Z.

Your email address will not be published. Required fields are marked *