Templatedokumentation JTL-Shop 2 Frontend

Aus JTLWiki

Wechseln zu: Navigation, Suche

Dieser Abschnitt behandelt die Dokumentation der Shoptemplates - also Layout und Design des Shops.

Hier finden Sie die Dokumenation der Emailtemplates.


Inhaltsverzeichnis

[bearbeiten] Verzeichnisstruktur

Wir empfehlen folgende Verzeichnisstruktur für das Template zu nutzen:

  • <Ihr Template>
    • css
    • email
      • eng
      • ger
      • <weitere sprachen>
    • gfx
    • lang
    • php
    • tpl_inc
  • css - hier befinden sich CSS Dateien für das Template
  • email - hier befinden sich Emailtemplatedateien, nach Sprache in dafür vorgesehene Verzeichnisse eingeordnet
  • gfx - hier befinden sich Grafikdateien
  • lang - hier befinden sich Sprachdateien des Templates. <Sprache-ISO-Code>.conf sind die jeweiligen Sprachdateien des Templates.
  • php - hier befindet sich die Datei functions.php und ist für PHP-Funktionen vorgesehen. Siehe hierzu [[PHP Nutzen
  • tpl_inc - hier befinden sich Include-Dateien, die in Templatedateien eingebunden werden können

Im Rootverzeichnis des Templates (<Ihr Template>) müssen sich folgende Templatedateien befinden:


Wofür jede einzelne Templatedatei steht, welche Variablen ihr zur Verfügung stehen, etc. finden Sie weiter unten in diesem Kapitel.

Achtung: Folgende Verzeichnisse müssen wie oben angegeben heissen und liegen:

  • email
  • lang
  • php


Das Template muss in das Verzeichnis templates des Shops (im Shoproot) kopiert werden:

  • templates/template a
  • templates/template b
  • templates/<Ihr Template>

[bearbeiten] Aufbau des Templates

[bearbeiten] Teiltemplates

Bei den meisten Shops ist es so, dass sich auf jeder Seite des Shops (Warenkorb, Impressum, Kategorieübersicht, Bestellvorgang) das "Gerüst" nicht verändert. D.h. der Kopfbereich, die Seiten mit Links, usw., Fußbereich bleiben immer gleich, es ändert sich lediglich der Teil, der für den Inhalt vorgesehen ist. In diesem Fall empfehlen wir, das Template in einzelne Templatedateien, die jeweils einen Bereich der Seite bauen, aufzusplitten.

Besteht der Shop aus einem immer gleichbleibendem Kopfbereich, Fußbereich, einer linken Spalte und einer rechten Spalte, so bietet sich folgende Struktur an:

  • <Ihr Template>
    • tpl_inc
      • header.tpl
      • footer.tpl
      • leftContainer.tpl
      • rightContainer.tpl

Eine Templatedatei kann nun an beliebiger Stelle die Teiltemplates einbinden, Beispiel der artikel.tpl:

{include file='tpl_inc/header.tpl'}
{include file='tpl_inc/leftContainer.tpl'}
##hier folgt der Inhalt der Artikeldetails##
{include file='tpl_inc/rightContainer.tpl'}
{include file='tpl_inc/footer.tpl'}


[bearbeiten] Config-/Sprachdateien

Smarty Configdateien werden vor allen als Sprachdateien für JTL-Shop 2 genutzt. Beispielinhalt einer solchen Sprachdatei ger.conf:

[global]
...
productNo = 'ArtikelNr.'
back = 'zurück'
addToCart = 'in den Warenkorb'
...
[productDetails]
...
productInStock = 'Artikel auf Lager'
productOutOfStock = 'Artikel zur Zeit vergriffen'
printThisPage = 'Diese Seite drucken'
...

Die Sprachdateien werden stets unter <Sprache-ISo-Code>.conf im Verzeichnis lang abgelegt.

Beispiele: ger.conf, fra.conf, eng.conf,...

In Templtedateien werden sie wie folgt eingebunden (Beispiel artikel.tpl von oben erweitert):

{config_load file="$lang.conf" section="global"}
{config_load file="$lang.conf" section="productDetails"}
{include file='tpl_inc/header.tpl'}
{include file='tpl_inc/leftContainer.tpl'}
##hier folgt der Inhalt der Artikeldetails##
{include file='tpl_inc/rightContainer.tpl'}
{include file='tpl_inc/footer.tpl'}

Durch die Angabe der Section (section="global") wird dem Template nur der jeweilige Abschnitt der Sprachdatei zugewiesen. Der Dateiname file="$lang.conf" stellt sicher, dass die korrekte Sprachdatei geladen wird..

Die Variablen aus Config-/Sprachdateien werden wie folgt genutzt:

{#VarName#}

[bearbeiten] Globale Variablen

Grundsätzlich stehen jeder Templatedatei alle Variablen zur Verfügung, die sich in der Session befinden. Diese werden über $smarty.session.Variablenname angesprochen:

Variablenname Typ Beschreibung
ArtikelSortierung String Aktuell aktive Artikelsortierung in der Produktübersicht
ArtikelProSeite Zahl Aktuell gesetzte Artikel pro Seite in der Produktübersicht
Boxen ObjektArray Dieses Array enthält alle Boxen, die der Shopbetreiber in der Konfiguration anzeigen möchte. Nähere Informationen zu Boxen finden Sie im Anschluss dieses Abschnitts unter Gloable Variable: Boxen
kSprache Schlüssel Schlüssel der aktuellen Sprache
cISOSprache String ISO Code der aktuellen Sprache
Waehrungen ObjektArray von Waehrung Nutzbar z.B. für die Währungsauswahl
Sprachen ObjektArray Nutzbar z.B. für die Sprachauswahl
Sprachen[i]->kSprache Schlüssel
Sprachen[i]->cNameEnglisch String Name der Sprache auf Englisch
Sprachen[i]->cNameDeutsch String Name der Sprache auf Deutsch
Sprachen[i]->cStandard String Standardsprache (Y/N)
Sprachen[i]->cISO String ISO - Code der Sprache
Waehrung Objekt Aktuell aktive Währung
Waehrung->kWaehrung Schlüssel
Waehrung->cName String Name der Währung
Waehrung->cNameHTML String HTML Steuerzeichen
Waehrung->fFaktor Zahl Währungsfaktor zur Standardwährung (Wechselkurs)
Waehrung->cStandard Bool Standardwährung (Y/N)
Waehrung->cVorBetrag Bool Währungszeichen vor dem Betrag (Y/N)
Waehrung->cTrennzeichenCent Bool Dezimal-Trennzeichen
Waehrung->cTrennzeichenTausend Bool 1000er Trennzeichen
Kundengruppe Objekt Aktuelle Kundengruppe
Kundengruppe->kKundengruppe Schlüssel
Kundengruppe->cName String Name der aktuellen Kundengruppe in der aktuellen Sprache
Kundengruppe->fRabatt Zahl Rabatt dieser Kundengruppe auf alle Artikel
Kundengruppe->cStandard Bool Standardkundengruppe (Y/N)
Kundengruppe->cShopLogin Bool Login nötig, um einkaufen zu können
Kundengruppe->nNettoPreise Bool Preise Netto anzeigen für diese Kundengruppe (0/1)
Steuersatz Array Steuersatz[kSteuerklasse] gibt den Steuersatz für diese Steuerklasse für das Land des Shops bzw. Rechnungsland des Kunden falls gesetzt
Steuerland String Steuerland ISO-Code
Linkgruppen Objekt Gruppen von Links, die im Template platziert werden.
Linkgruppen-><templatename der Linkgruppe> Objekt
Linkgruppen-><templatename der Linkgruppe>->cName String Eindeutiger Name der Linkgruppe
Linkgruppen-><templatename der Linkgruppe>->cLocalizedName SprachArray anzuzeigender Name der Linkgruppe. Bsp: cLocalizedName['ger']
Linkgruppen-><templatename der Linkgruppe>->Links Array
Linkgruppen-><templatename der Linkgruppe>->Links[i]->cName String Eindeutiger Name des Links
Linkgruppen-><templatename der Linkgruppe>->Links[i]->nLinkart Zahl Schlüssel, der die Linkart definiert. 1=Link mit eigenem Inhalt. 2=Link mit fremdem Inhalt bzw. Link zu fremden URLs
Linkgruppen-><templatename der Linkgruppe>->Links[i]->cURL String URL dieses Links
Linkgruppen-><templatename der Linkgruppe>->Links[i]->nSort Zahl Sortiernummer
Linkgruppen-><templatename der Linkgruppe>->Links[i]->cLocalizedName SprachArray Anzuzeigender Name des Links. Bsp: cLocalizedName['ger']
Linkgruppen-><templatename der Linkgruppe>->Links[i]->cLocalizedTitle SprachArray Anzuzeigender Titel des Links. Bsp: cLocalizedName['ger']
ZuletztBesuchterArtikel Schlüssel Artikelschlüssel des zuletzt besuchten Artikels


Folgende weitere Variablen stehen jeder Templatedatei zur Verfügung:

Variablenname Typ Beschreibung
currentTemplateDir String Pfad zum Templateverzeichnis
session_name String Name der Session
session_id String Session ID
SID String session_name=session_id, gleichbedeutend mit SID Konstante von PHP
lang String Aktueller Sprache-ISO-Code, z.B. ger
NettoPreise Zahl 0 = Nettopreise anzeigen, 1 = Bruttopreise anzeigen
WarenkorbArtikelanzahl Zahl Anzahl an Produkten im Warenkorb
Warenkorbtext String "Ihr Warenkorb ist leer", oder "Es befinden sich X Artikel im Warenkorb"
Navigation String Brotkrümelnavigation. Z.B. "Startseite -> Hardware -> CPU -> Athlon 3200Mhz"
KategorielisteHTML String Kategorienavigation, die in das Template direkt eingebunden werden sollte.
requestURL String URL zur aktuellen Seite. Wird zur dynamischen Sprachumschaltung verwendet.
Einstellungen Array Dies wird bei der jeweiligen Seite behandelt


[bearbeiten] Boxen

Als Boxen werden Module bezeichnet, die Informationen oder Funktionen bieten und gewöhnlich in einer Box verpackt sind. Boxeninformationen stehen global jeder Seite im Shop zur Verfügung. Boxen werden über das ObjektArray $Boxen mit Ihrem Namen angesprochen.

Folgende Boxen stehen JTL-Shop 2 zur Verfügung:


[bearbeiten] Besteller Box

Die Besteller Box enthält eine festgelegte Anzahl an Artikeln des Shops, die bisher am meisten verkauft wurden. Die Anzahl der anzuzeigenden Artikel bestimmt der Shopbetreiber in den Shopeinstellungen.

Name Bestseller
implementiert seit 1.0

Folgende Variablen stehen in dieser Box zur Verfügung:

Variablenname Typ Beschreibung
anzeigen Bool ob diese Box angezeigt werden soll. (Y/N)
Artikel Objekt (Artikelliste) dieses Objekt ist eine Artikelliste. Es enthält ein Array mit echten Artikel-Objekten
Artikel->elemente ObjektArray Dieses Array enthält Artikel Objekte
Artikel->elemente[i]->artikel Objekt Dieses Objekt repräsentiert einen Artikel. Beschreibung siehe Artikel unter artikel.tpl


[bearbeiten] Top Angebot Box

Die Top Angebot Box enthält eine festgelegte Anzahl an Artikeln des Shops, die als Top Angebot vom Shopbetreiber markiert sind. Die Anzahl der anzuzeigenden Artikel bestimmt der Shopbetreiber in den Shopeinstellungen.

Name TopAngebot
implementiert seit 1.0

Folgende Variablen stehen in dieser Box zur Verfügung:

Variablenname Typ Beschreibung
anzeigen Bool ob diese Box angezeigt werden soll. (Y/N)
Artikel Objekt (Artikelliste) dieses Objekt ist eine Artikelliste. Es enthält ein Array mit echten Artikel-Objekten
Artikel->elemente ObjektArray Dieses Array enthält Artikel Objekte
Artikel->elemente[i]->artikel Objekt Dieses Objekt repräsentiert einen Artikel. Beschreibung siehe Artikel unter artikel.tpl


[bearbeiten] Neu im Sortiment Box

Die Neu im Sortiment Box enthält eine festgelegte Anzahl an Artikeln des Shops, die neu im Sortiment sind. Die Anzahl der anzuzeigenden Artikel bestimmt der Shopbetreiber in den Shopeinstellungen.

Name NeuImSortiment
implementiert seit 1.0

Folgende Variablen stehen in dieser Box zur Verfügung:

Variablenname Typ Beschreibung
anzeigen Bool ob diese Box angezeigt werden soll. (Y/N)
Artikel Objekt (Artikelliste) dieses Objekt ist eine Artikelliste. Es enthält ein Array mit echten Artikel-Objekten
Artikel->elemente ObjektArray Dieses Array enthält Artikel Objekte
Artikel->elemente[i]->artikel Objekt Dieses Objekt repräsentiert einen Artikel. Beschreibung siehe Artikel unter artikel.tpl


[bearbeiten] Sonderangebote Box

Die Sonderangebote Box enthält eine festgelegte Anzahl an Artikeln des Shops, die einen reduzierten Sonderpreis haben. Die Anzahl der anzuzeigenden Artikel bestimmt der Shopbetreiber in den Shopeinstellungen.

Name Sonderangebote
implementiert seit 1.0

Folgende Variablen stehen in dieser Box zur Verfügung:

Variablenname Typ Beschreibung
anzeigen Bool ob diese Box angezeigt werden soll. (Y/N)
Artikel Objekt (Artikelliste) dieses Objekt ist eine Artikelliste. Es enthält ein Array mit echten Artikel-Objekten
Artikel->elemente ObjektArray Dieses Array enthält Artikel Objekte
Artikel->elemente[i]->artikel Objekt Dieses Objekt repräsentiert einen Artikel. Beschreibung siehe Artikel unter artikel.tpl


[bearbeiten] Zuletzt angesehen Box

Die Zuletzt angesehen Box enthält den Artikel, den der Besucher zuletzt angeschaut hat

Name ZuletztAngesehen
implementiert seit 1.0

Folgende Variablen stehen in dieser Box zur Verfügung:

Variablenname Typ Beschreibung
anzeigen Bool ob diese Box angezeigt werden soll. (Y/N)
Artikel Objekt Dieses Objekt repräsentiert einen Artikel. Beschreibung siehe Artikel unter artikel.tpl


[bearbeiten] Schnellkauf Box

Die Schnellkauf Box enthält ein Feld für Artikelnummer / EAN, in das der Kunde eine Artikelnummer bzw. EAN eintragen kann, um einen Artikel direkt in den Warenkorb zu legen, der die eingegebene Artikelnummer / EAN besitzt.

Name Schnellkauf
implementiert seit 1.0

Folgende Variablen stehen in dieser Box zur Verfügung:

Variablenname Typ Beschreibung
anzeigen Bool ob diese Box angezeigt werden soll. (Y/N)

Diese Box implementiert ein Formular, folgende Formularfelder müssen enthalten sein:

  • schnellkaufEAN: Textfeld für die Artikelnummer / EAN
  • schnellkauf: muss 1 sein. Type hidden bietet sich an.
  • {$session_name}: gefüllt mit {$session_id}. Ist notwendig für Browser, die keine Cookies akzeptieren. Type hidden bietet sich an.

Beispiel:

<form name="schnellkauf" action="warenkorb.php" method="post" style="padding:0px;margin:0px;">
	<input type="hidden" name="schnellkauf" value="1">
	<input type="hidden" name="{$session_name}" value="{$session_id}">
	<p class="box_login">{#productNoEAN#}:</p>
	<input type="text" class="schnellkaufEAN" name="ean"><p class="spacer"> </p>
	<input type="submit" value="{#intoBasket#}">
</form>


[bearbeiten] AktuelleSeite

Ab Version 2.15 von JTL-Shop 2 steht diese Variable zur Verfügung. Sie gibt an, welche Seite momentan angezeigt wird und kann genutzt werden, um z.B. die aktive Seite in einem Menü zu betonen. {$AktuelleSeite} kann folgende Werte annehmen:

  • STARTSEITE
  • ARTIKEL
    • {$Artikel} enthält dabei den aktiven Artikel
  • PRODUKTE
    • {$AktuelleKategorie} enthält dabei die aktuell gewählte Kategorie
    • {$KategorieInhalt} enthält den Inhalt der aktuell gewählten Kategorie
  • SUCHE
    • {$Suchergebnisse} enthält die Suchergebnisse
    • {$Suchergebnisse->Suchausdruck} ist der Ausdruck, nach dem aktuell gesucht wurde
  • SEITE
    • {$Link} enthält den Inhalt der Seite
  • WARENKORB
  • MEIN KONTO
  • REGISTRIEREN
  • PASSWORT VERGESSEN
  • BESTELLVORGANG

[bearbeiten] Einstellungen

Jeder Seite stehen Einstellungen in Form eines Arrays zur Verfügung. Die Variable hierzu heisst Einstellungen. Einstellungen werden nach Bereichen unterschieden, einzelne Shopseiten implmentieren einen oder mehrere Bereiche der Einstellungen und stellen es dem Template zur Verfügung.

Der Bereich "Boxen" z.B. enthätlt Einstellungen zu Boxen, die im Shop angezeigt werden können, etwa eine Box mit Top Angeboten , Bestellern usw. Die Einstellungen geben dem Template die Informationen, ob die jeweilige Box etwa angezeigt werden soll oder nicht.

Einstellungen werden in folgende Bereiche aufgeteilt:

  • Globale Einstellungen
  • Artikelübersicht / Suche
  • Artikeldetails
  • Kunden / Formulare
  • Warenkorb / Kaufabwicklung
  • Boxen

Welche Einstellungsbereiche welche Shopbereiche implementieren, steht bei der jeweiligen Beschreibung der Shopseiten.

Folgende Einstellungen enthalten die einzelnen Einstellungsbereiche:

[bearbeiten] Globale Einstellungen

[bearbeiten] Artikelübersicht / Suche

[bearbeiten] Artikeldetails

[bearbeiten] Kunden / Formulare

[bearbeiten] Warenkorb / Kaufabwicklung

[bearbeiten] Boxen

[bearbeiten] Beschreibung der Shopseiten

Der Shop besteht aus folgenden Templates: