Shopware Knowledgebase

Shopware Labs

Der Bereich Shopware Labs ist die Plattform für alle Entwickler. Hier findet man technische Dokumentationen und zahlreiche Tipps und Tricks rund um das Thema Programmieren. In dieser Rubrik stellen außerdem die Entwickler der shopware AG neue und experimentelle Lösungsansätze vor. Neue Funktionen, die in dieser Rubrik bereitgestellt werden, sind teilweise auch für zukünftige Releases geplant. Die Funktionen können dann ohne Programmierkenntnisse zukünftig direkt im Shopware Backend konfiguriert werden oder werden über Plugins bereitgestellt. Informationen über neue, geplante Funktionen finden Sie in unserer Roadmap.

Bitte beachten Sie, dass die hier bereitgestellten Lösungsansätze nicht offiziell supportet werden und nur eingebaut werden sollten, sofern Sie über das entsprechende, technische Wissen verfügen.

Schnelleinstieg Template Tutorial 3.5.0

9 Kommentare

Vorschau

Das Endergebnis dieses Tutorials

Das komplette Template finden Sie im Downloadbereich dieses Tutorials.

Vorwort

In diesen Tutorial erhalten Sie grundlegenden Informationen, die Sie zur Templateanpassung in Shopware 3.5 wissen müssen. Wir konzentrieren uns hier auf die wesentlichen Anpassungen, die Sie auch mit wenig Programmiererfahrungen durchführen können.

Bitte beachten Sie bei Ihren Anpassungen immer darauf, dass Sie das Standardtemplate "_default" von Shopware nicht bearbeiten, da Ihre Änderungen beim nächsten Update wieder überschrieben werden könnten.

Doch wie passen Sie jetzt Shopware an Ihre persönlichen Bedürfnisse an? Wir haben einen Weg gefunden, wie Sie stets die neuesten Funktionen von Shopware nutzen können ohne dass Ihre Anpassungen verloren gehen. Die Zauberwörter lauten hier "Vererbungen" und "Template-Blöcke", worauf wir im Laufe dieses Tutorials eingehen werden.

Ordnerstruktur anlegen

Bevor wir aber anfangen können, das Template an unsere Bedürfnisse anzupassen, müssen wir erst die Ordnerstruktur erstellen, die Shopware erwartet. Die Struktur basiert auf den Bereich, welcher angepasst werden soll (frontend oder backend). Der Ordner "frontend" unterteilt sich in Unterordner, die die verschiedenen Shopbereiche repräsentieren.

Diese Bereiche, auch Controller genannt, sind wie folgt definiert:

_resources			Enthält alle Bilder, CSS- und JS Dateien
account				Mein Kontobereich (Bestellübersicht, Login, ...)
blog				Templates für das Blogsystem
campaign			Aktionen (Banner, ...)
checkout			Der Bestellprozess (Warenkorb, Kassenseite, ...)
content				Feeds z.B "Aktuelles"
custom				Shopseiten
detail				Artikeldetailseite
error				Fehlerseiten  (404, Template nicht gefunden, ...)
forms				Templates für das Forumlarsystem
home				Startseite
index				Grundgerüst
listing				Kategorieansicht
newsletter			Newsletteranmeldung und -auflisting
note				Merkzettel
plugins				Templates für Plugins
register			Registierung
search				Suchergebnisse
sitemap				Template für die Sitemap
tellafriend			Formular zur Weiterempfehlung von Artikeln
ticket				Ticketsystem (Support beantragen, Supportverwaltung, ...)

Um Ihnen den Einstieg zu erleichtern, finden Sie im Downloadbereich dieses Tutorials die komplette Ordnerstruktur eines Templates. Diese Struktur können Sie einfach mit einem FTP-Client auf Ihren Server uploaden, um danach direkt mit Ihren Änderungen beginnen zu können.

Stylesheet erstellen

Nachdem wir die Ordnerstruktur angelegt haben, erstellen wir im nächsten Schritt das Stylesheet des Templates. Das Stylesheet repräsentiert alle optischen Anpassungen, welche Sie durchführen.

Das Stylesheet erstellen Sie im Ordner _resources/styles Ihres Templates. In diesem Tutorial heißt unser Stylesheet "tutorial.css". Hier passen wir in späteren Schritten die Farben an, ändern das Logo und gestalten die Navigation des Shops neu. Sie können im Stylesheet auch Elemente des Templates um positionieren, darauf werden wir aber später noch eingehen.

Zunächst fangen wir damit an, dass wir in das _default-Template wechseln und die Datei "colors.css" im Ordner _resources/styles öffnen und kopieren. Jetzt wechseln wir wieder in unser Stylesheet "tutorial.css" und fügen den Inhalt ein, anschließend speichern wir die Datei!

Dateien einbinden

Wenn wir jetzt unseren Browser aktualisieren (vorausgesetzt wir haben in der Templateauswahl unser eigenes Template gewählt) sehen wir, dass nichts passiert ;(. Das liegt daran, dass wir Shopware noch nicht mitgeteilt haben, dass es unsere "tutorial.css" laden soll. Doch wie machen wir dies?

Hier kommen wir jetzt zum Blocksystem, welches Shopware ab Version 3.5 von Haus aus mitbringt. Blöcke sind von Shopware vor definierte Bereiche im Template-Code, welche über einen Namen angesprochen werden können. Hiermit haben Sie die Möglichkeit bestehende Blöcke, welche im Standardtemplate definiert sind, zu überschreiben oder zu erweitern. Dies hat den Vorteil, dass Sie nicht bei einer kleinen Änderungen die komplette Datei duplizieren müssen. Um Ihnen das Blocksystem ein wenig näher zu bringen, werden wir nun gemeinsam den ersten Block erweitern.

Um dies zu bewerkstelligen müssen wir aber erstmal schauen welche Blöcke zur Verfügung stehen und welcher sich optimal für unsere Anpassung eignet. Hierzu wechseln wir in das Standardtemplate im Ordner "frontend/index/" und öffnen die Datei "header.tpl".

 
... 
 
{* Page title *}
<title>{block name='frontend_index_header_title'}{strip}
{if $sBreadcrumb}{foreach from=$sBreadcrumb|array_reverse item=breadcrumb}{$breadcrumb.name} | {/foreach}{/if}{$this->config('sShopname')}
{/strip}{/block}</title>
 
{* Stylesheets and Javascripts *}
{block name="frontend_index_header_css_screen"}
	<link type="text/css" media="all" rel="stylesheet" href="{link file='frontend/_resources/styles/framework.css'}" />
	<link type="text/css" media="screen, projection" rel="stylesheet" href="{link file='frontend/_resources/styles/style.css'}" />
	<link type="text/css" media="screen, projection" rel="stylesheet" href="{link file='frontend/_resources/styles/colors.css'}" />
	<link type="text/css" media="screen, projection" rel="stylesheet" href="{link file='frontend/_resources/styles/plugins.css'}" />
	<link type="text/css" media="screen, projection" rel="stylesheet" href="{link file='frontend/_resources/styles/enrichments.css'}" />
{/block}
 
...
 
 

Hier sehen wir dass es einen Block mit der Bezeichnung "frontend_index_header_css_screen" gibt, wo alle Stylesheets geladen werden. Diesen Block werden wir nun verwenden um die "tutorial.css"-Datei zu laden.

Um das umzusetzen wechseln wir in unser Template-Verzeichnis und erstellen, falls noch nicht vorhanden, den Ordner "index" und in diesem Ordner die (leere) Datei header.tpl. Wir benennen die Datei genauso, wie die Ursprungsdatei wo wir den passenden Block gefunden haben. Dies ist zwar nicht zwingend erforderlich, aber bei größeren Anpassungen behält man so den Überblick.

Öffnen Sie an dieser Stelle jetzt die gerade von Ihnen erstellte header.tpl-Datei und fügen Sie folgenden Code ein:

 
{extends file="../_default/frontend/index/header.tpl"}
 

Mit diesen Code-Schnipsel sagen wir Shopware, dass wir die Datei "header.tpl" aus den Standardtemplate erben möchten. Dies müssen wir machen, damit wir Blöcke bearbeiten können, die in der "header.tpl" im Standardtemplate definiert sind.

Jetzt fügen wir folgenden Code in unsere "header.tpl"-Datei ein:

 
{block name="frontend_index_header_css_screen"}
	<link type="text/css" media="screen, projection" rel="stylesheet" href="{link file='frontend/_resources/styles/tutorial.css'}" />
{/block}
 

Wir speichern die Änderungen und aktualisieren den Browser und sehen nun, dass jetzt unsere "tutorial.css" geladen wird aber alle anderen CSS-Dateien, die in dem Block definiert waren, ausgeblendet werden. Das liegt daran, dass wir den Ursprungsblock komplett ersetzt haben. Was wir aber möchten ist, dass am Ende des Blockes unsere Änderung angefügt wird. Hierzu gibt es die Parameter "append" und "prepend", die Sie beim Block mit definieren können. "append" sorgt dafür dass am Ende des Blocks der Inhalt angefügt wird. "prepend" bewirkt genau das Gegenteil. Hier wird am Anfang des Blocks unser Inhalt geschrieben.

Fügen Sie jetzt im Blockaufruf den Parameter hinzu, so dass Ihre "header.tpl" jetzt wie folgt aussieht:

 
{extends file="../_default/frontend/index/header.tpl"}
 
{* Block erweitern *}
{block name="frontend_index_header_css_screen" append}
	<link type="text/css" media="screen, projection" rel="stylesheet" href="{link file='frontend/_resources/styles/tutorial.css'}" />
{/block}
 

Nachdem Sie die Änderungen gespeichert haben, sehen Sie, dass jetzt die Darstellung wieder korrekt ist und auch unsere "tutorial.css"-Datei nach allen anderen CSS-Dateien geladen wird. Jetzt können wir unsere Änderungen im Stylesheet durchführen.

Anpassungen durchführen

Wir haben jetzt einen Ausgangspunkt geschafften, so dass wir nun zum Beispiel die Farben und das Logo anpassen können.

Farben ändern

In diesen Schritt ändern wir die Farben. Das Standardtemplate besteht aus den beiden Hauptfarben "#dd4800" und "#efe9e2", welche wir jetzt einfach nur noch in unserer "tutorial.css" ändern müssen.

Hierzu nutzen wir die Funktion "Suchen und Ersetzen" unserer Entwicklungsumgebung. Als erstes suchen wir nach "#dd4800" und ersetzen diese Farbe mit "#613400" . Danach ersetzen wir die Farbe "#efe9e2" mit "#e6ded6".

Hintergrund anpassen

Als nächstes laden wir ein Hintergrundbild in den Ordner "_resources/images/backgrounds" hoch. In Beispiel heißt das Bild "main_bg.jpg".

Wenn das Bild hochgeladen ist, folgen jetzt CSS-Anpassungen, welche wir am Ende der Datei "tutorial.css" einfügen.

 
html {background: transparent url('../images/backgrounds/main_bg.jpg') fixed top center;}
 

Navigation neu gestalten

Hierzu fügen Sie einfach folgenden Code am Ende Ihres Stylesheets ein

 
/* Navigation anpassen */
#mainNavigation {
	background: #fff;
	margin: 5px 10px 0;
	width: 963px;
	padding-top: 0;
}
#mainNavigation a {
	color: #777;
}
#mainNavigation a, #mainNavigation a.active {
	border: 0 none;
	height: 30px;
	border-top: 1px solid #ccc;
}
#mainNavigation a.active {
	background: none;
	border-top: 2px solid #613400;
	margin-top: -1px;
}
#mainNavigation a:hover {
	border-top: 2px solid #613400;
	color: #111;
	text-decoration: none;
	margin-top: -1px;
}
#mainNavigation a.active:hover {
	color: #613400;
}
 

Das Ergebnis des Umstyling sieht dann wie folgt aus:

Logo wechseln

Hierzu laden wir unser Logo unter "_resources/images" hoch. In unseren Fall heißt die Datei "logo.png", welches eine Höhe von 72px sowie eine Breite von 152px hat.

Um das Logo zu ändern, fügen Sie bitte folgenden Code am Ende Ihrer CSS-Datei ein:

 
/* Logo anpassen */
#header #logo a {
	background: url('../images/logo.png') no-repeat;
	height: 72px;
	width: 158px;
}
 

Optionen umpositionieren

Wir setzen hierzu wieder folgenden Code-Snipsel ans Ende unseres Stylesheets:

 
/* Optionen umpositionieren */
.my_options {
	left: 775px;
	top: 127px;
}
 

Suche und Breadcrumb ausbauen

Hier kommen wir wieder zum Blocksystem, welches Shopware verwendet. Um uns die passenden Blöcke für die Suche und für den Breadcrumb zu suchen öffnen wir die Datei "frontend/index/index.tpl" und suchen nach den Blöcken, welche die Suche und Breadcrumb enthalten.

 
...
 
{* Maincategories navigation top *}
{block name='frontend_index_navigation_categories_top'}
	{include file='frontend/index/categories_top.tpl'}
{/block}
 
{* Search *}
{block name='frontend_index_search'}
	{include file="frontend/index/search.tpl"}
{/block}
 
{* Breadcrumb *}
{block name='frontend_index_breadcrumb'}
	{include file='frontend/index/breadcrumb.tpl'}
{/block}
 
...
 

Wie wir sehen, haben wir hier zwei Blöcke zur Verfügung. Zum einen den Block "frontend_index_search", der die Suche beinhaltet und "frontend_index_breadcrumb", der den Breadcrumb beinhaltet.

Um diese Blöcke jetzt zu überschreiben erstellen wir in unserem Template im Ordner "index" eine Datei mit dem Namen "index.tpl". Um die Blöcke überhaupt bearbeiten zu können, müssen wir wieder von der Datei erben, welche die Blöcke beinhaltet. In diesen Fall ist es die Datei "_default/frontend/index/index.tpl".

Kopieren Sie für die Vererbung der Datei folgenden Code in Ihre "index/index.tpl"

 
{extends file="../_default/frontend/index/index.tpl"}
 

Wir möchten jetzt im folgenden Schritt diese Suche und den Breadcrumb ausbauen. Dafür müssen wir einfach nur die beiden leeren Blöcke in unsere "index/index.tpl" schreiben.

 
{* Suche ausbauen *}
{block name='frontend_index_search'}{/block}
 
{* Breadcrumb *}
{block name='frontend_index_breadcrumb'}{/block}
 

Wenn Sie jetzt die Seite aktualisieren, dann sehen Sie dass der komplette Content umbricht. Dies liegt daran, dass die Breadcrumb ein Hauptbestandteil der Seite ist und dafür sorgt, dass der Content nicht gefloatet wird.

Um dieses Problem zu beheben setzen wir eine Div-Box mit der Klasse "space" in den Block des Breadcrumbs. Unsere "index.tpl" sieht jetzt wie folgt aus:

 
{extends file="../_default/frontend/index/index.tpl"}
{* Suche ausbauen *}
{block name='frontend_index_search'}{/block}
 
{* Breadcrumb *}
{block name='frontend_index_breadcrumb'}<div class="space"></div>{/block}
 

Zusammenfassung

Das war schon unsere kleine Einführung in die Grundlagen der Templategestaltung. Sie finden das Endresultat im Downloadbereich dieses Artikels als ZIP-Archiv.

Mozilla in Verbindung mit dem Firebug-Addon

Hinweis: Um Ihnen den Umgang mit dem Shopware-Templatesystem so einfach wie Möglich zu gestalten empfehlen wir Ihnen die Nutzung des aktuellsten Mozilla Firefox Browsers in Kombination zum Webdevelopment-Addon: Firebug.

Sie können die erwähnte Software unter folgenden Links finden:

Umgang mit dem Firebug-Addon

Mit dem Firebug haben Sie die Möglichkeit alle Elemente einer Homepage zu untersuchen und On-The-Fly zu bearbeiten (d.h. die Inhalte werden nur im Browser-Cache bearbeitet und nicht auf dem Server gespeichert.)

Installation und Aktivierung

Wenn Sie das Addon heruntergeladen bzw. installiert haben, so müssen Sie es noch aktivieren.

Gehen Sie hierzu bitte im Mozilla Firefox auf Extras und wählen den Punkt Add-ons.

Nun wählen Sie das Add-on Firebug aus und aktivieren Sie über die entsprechende Schaltfläche.

Hinweis: Firefox wird Sie auffordern den Browser neu zu starten. Bei geöffneten Inhalten, die nicht abgespeichert wurden, kann es bei einem Neustart des Programmes zu Datenverlust führen. Bitte versichern Sie sich, dass alle Inhalte ordnungsgemäß abgespeichert wurden und starten Sie den Browser neu.

Benutzen des Firebug-Addons

Aktivieren Sie die Firebug-Console durch drücken von [F12] oder durch den Menüpunkt Element untersuchen im Rechtsklick-Menü.

Sie haben nun die Möglichkeit ein Element Ihrer Wahl auf der Homepage zu untersuchen. Wenn Sie ein Element untersuchen erscheint die Firebug Konsole bzw. aktualisiert den Inhalt.

Sie haben nun die genaue Position des Elements im Quellcode und in der CSS-Datei:

Die Konsole gibt viele Nützliche Informationen zum untersuchten Element aus:

Dieses Add-on ist eine absolute Empfehlung, denn mit diesen Informationen lassen sich die zu bearbeitenden Elemente leicht im Editor auffinden und vieles mehr. Dies beschleunigt Ihre Arbeit im Web um ein Vielfaches.

Artikel-PDF erstellen

Artikel bewerten

Waren diese Informationen hilfreich? Ja Nein


Kommentare:

Prima Ersteinstieg! - 19. February 2012 - 02:55 Uhr

Von: hannac

Super, ich wollte jetzt erstmal einfach sehen, wie das mit dem Templateanpassen so prinzipiell geht.

Und da hat mir das Tutorial sehr geholfen.

Danke!

Beschissenes Tutorial - 21. January 2012 - 19:32 Uhr

Von: A.M.

Ich halte mich für durchschnittlich intelligent und habe sogar schon die eine oder andere Seite mit CSS umgestaltet - aber ich werde aus diesem tutorial nicht schlau.

Lösung klickbarer Bereich bei \'Mein Konto\' und \'Merkzettel\' - 15. November 2011 - 04:41 Uhr

Von: Heiko

Hallo,

durch Zufall und dank Firebug habe ich rausgefunden, das man das Problem durch einfügen von 'padding-top' lösen kann:


/* Optionen umpositionieren */
.my_options {
position: absolute;
left: 775px;
top: 106px;
padding-top: 10px;
}


Viele Grüße
Heiko

Super Tutorial (danke ;-) - aber .my_options Container nicht klickbar - 21. October 2011 - 01:34 Uhr

Von: Heiko

Hallo,

auch wir haben das Problem, das der gemäß Tutorial verschobene .my_options Container Kaum winzige Klickbereiche hat (siehe zwei Beiträge weiter oben).

Hat schon jemand eine Lösung?


Viele Grüße
Heiko

Sehr schönes Tutorial - 14. October 2011 - 08:38 Uhr

Von: Johannes

hört nur leider da auf wo es interresant wird, ich würde zum Bsp. gerne wissen wie man die Suche z.B. in den Header bekommt, gibt es da ein Best pracktice, denn ich habe hier bei mir z.B. die orignal index.tpl in mein template kopiert und dann das suchfeld an die richtige Stelle verschoben, aber ist das die richtige Lösung?

Super - 5. September 2011 - 22:11 Uhr

Von: Erf

Solche Tutorials hab ich mir händeringend gewünscht, als wir noch bei xtc waren...

super gute Erklärung - 8. July 2011 - 11:50 Uhr

Von: eWeniger

vielen Dank für die tolle Einführung. Jetzt kann man sich ein Bild machen, wie alles zusammengehört und welcher Ordner für welche Dinge zuständig ist. Können sich andere Foren ein großes Stück abschneiden. Weiter so.

link area ist winzig klein - 23. May 2011 - 15:52 Uhr

Von: osausb

vielen Dank erstmal für das tolle Tutorial, das hat mir den Einstieg in die doch recht komplexe Welt der shopware Templates um einiges erleichtert.
Ein Problem habe ich aber doch: Die Links im verschobenen .my_options Container (hab es genauso wie in diesem Tutorial gemacht) haben nur noch ganz schmale klickbare Bereiche.. Nur der Unterstrich (der auch erst beim Hover dargestellt wird) ist klickbar, die Schriftzüge 'mein Konto' und 'Merkzettel' nicht.
Hat da jemand eine Lösung parat?

vielen Dank und viele Grüße!

Spitze - 29. März 2011 - 08:40 Uhr

Von: Andreas

Keine Ahnung, warum hier niemand Danke sagt, aber für mich war dieses Tutorial eine riesige Hilfe, ein bisschen mehr Verständnis über die Funktion der gestaltung zu erhalten.

Gruß

Artikel kommentieren


Die mit einem * markierten Felder sind Pflichtfelder.

Weitere interessante Artikel:

Bezeichnung:
Rating:
Klicks:
Datum:

Bestell-Nr.: SW1400

Lieferzeit ca. 5 Tage

€ 1,00

Preise inkl. gesetzlicher
MwSt. zzgl. Versandkosten*

€ 1,00

Preise inkl. gesetzlicher
MwSt. + Versandkosten*

Kategorien: