Individualisierung durch Child-Templates

Einleitung

Die empfohlene Vorgehensweise zur Individualisierung des easyTemplate360 ist die Nutzung eines Child-Templates.

Die Goldene Regel für Child-Templates

Bei der Verwendung von Child-Templates ist vor allem eines zu beachten: Lege nur das als Dateien an und passe nur die Dinge an, die Du wirklich für die Individualisierung brauchst!

Template-Dateien im Child-Template werden logischerweise nicht bei Template-Updates (die ja das Parent-Template betreffen) aktualisiert. Das heißt, mitunter fehlen Dir dann neuere Funktionen, bis du deine Child-Template-Dateien nachgezogen hast (was aufwendig werden kann).

Automatische Erstellung von Child-Templates: Ab Version 2.0.34 des EasyTemplate360v2 Plugin hast du die Möglichkeit, dir im Dashboard des Plugins automatisch ein korrekt strukturiertes Child-Template als Basis anlegen zu lassen. Hierdurch vermeidest du Fehler bei der manuellen Erstellung.

Das grundlegende Vorgehen zur Erstellung von Child-Templates findest Du im Guide von JTL:

https://jtl-devguide.readthedocs.io/projects/jtl-shop/de/latest/shop_templates/eigenes_template.html

Erweiterungen von Templates können ganz analog zum JTL-Standard-Template NOVA erfolgen: Leg einfach die zu überschreibende .tpl-Datei in einer parallelen Ordnerstruktur an und es kann losgehen - das funktioniert übrigens auch für die Widget-Templates im Ordner .../easytemplate360/widgets/

template.xml

In JTL muss jedes Template eine template.xml-Datei mitbringen.

Im Folgenden siehst Du eine beispielhafte template.xml für ein Child-Template des easyTemplate360.

Die Beispiele gehen von einem Template aus, was im Ordner templates/MeinChild liegt.

WICHTIG: Die in der template.xml referenzierten Dateien müssen auch angelegt sein! Insbesondere die themes/mytheme/css/theme.css innerhalb des Templates. Sonst kann es zu Fehlern im JTL-Shop Adminbereich kommen!

Bitte wenden Sie sich im Zweifelsfall an einen JTL-Servicepartner.

Beispiel: template.xml

<?xml version="1.0" encoding="utf-8" standalone="yes"?> <Template isFullResponsive="true"> <Name>Mein Child-Template</Name> <Author>Ich</Author> <URL>https://meine-url.de</URL> <Version>1.0.0</Version> <ShopVersion>5.0.3</ShopVersion> <Parent>easyTemplate360</Parent> <Description>Mein Child-Template für EasyTemplate360</Description> <Settings> <Section Name="Theme" Key="theme"> <Setting Description="Theme" Key="theme_default" Type="select" Value="mytheme" override="true"> <Option Value="mytheme">Mein Theme</Option> </Setting> </Section> </Settings> <Minify> <CSS Name="mytheme.css"> <File Path="themes/mytheme/css/theme.css"/> </CSS> <JS Name="jtl3.js"> <!-- Beispiel: Eigene JS-Datei laden --> <File Path="js/meine-datei.js"/> <!-- Beispiel: Ersetzen des Mobile Menus vom easyTemplate360 --> <File Path="js/easytemplate/mobile-menu-plugin.min.js" override="true"/> </JS> </Minify> </Template>

Bootstrap.php

Im Child-Template selbst muss es eine Bootstrap.php geben.
Wichtig ist vor allem, dass die Bootstrap-Klasse die Bootstrap-Klasse vom easyTemplate360 extended und dass die parent::boot()-Methode sowie die parent::registerPlugins()-Methode aufgerufen werden, falls sie überschrieben werden.

Eine mögliche (minimalistische) Bootstrap.php könnte so aussehen:

<?php declare(strict_types=1); namespace Template\MeinChild; /** * Class Bootstrap * @package Template\MeinChild */ class Bootstrap extends \Template\easyTemplate360\Bootstrap { /** * @inheritdoc */ public function boot(): void { parent::boot(); } protected function registerPlugins(): void { parent::registerPlugins(); } }

Wichtige Hinweise

Aus technischen Gründen darf das Theme im Child-Template nicht “default” heißen.