Templatedokumentation JTL-Shop 2 Frontend
Aus JTLWiki
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:
- <Ihr Template>
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:
- 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
- tpl_inc
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:
