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.