Neu Child Template mit Theme updatesicher erstellen

AET

Aktives Mitglied
9. Januar 2018
63
6
Hallo zusammen,

ich glaube ich habe noch ein paar Verständnisprobleme bei der Template- bzw. Themes-Anpassung.

Ziel: Ich möchte mit dem Evo-Template mit Slate Thema eigene Anpassungen vornehmen. Als erstes z.B. einen Text auf der Startseite nach unten verschieben. Die Anleitungen dazu habe ich gefunden (denke ich), aber ich möchte das ganze Update fähig halten und habe dazu ein Child-Template erstellt.

Voraussetzungen:
Shop 4.06​
Evo Template mit Slate Theme​
Evo-Child Template mit dem Minimum-Template aus https://gitlab.com/falk.jtl/evo-child-vorlage/tree/master von Falk Prüfer angelegt (lässt sich auch aktivieren), jedoch noch nichts verändert.​

Probleme:
  • Wenn ich jetzt das Child Template aktiviere ist es leer und ich muss einfach alle Einstellungen die ich vorher im Evo gemacht habe wieder im Child einstellen. Die Vererbungen des Evo auf das Child gelten nicht für die Grundeinstellungen, richtig?
  • Das Thema Slate wird nicht angegeben, nur das my-evo. Soweit ich verstanden habe sollte ich jetzt im Child Template unter /Evo-Child/themes/base/less in den Dateien base.less und variables.less die Pfade anpassen. Dann sollte das Slate Thema laufen, richtig?
    • Also in der base.less - @import "../../../../Evo/themes/evo/less/theme"; - ändern zu @import "../../../../Evo/themes/slate/less/theme";.
    • Und in der variables.less - @import "../../../../Evo/themes/evo/less/variables"; - ändern zu @import "../../../../Evo/themes/slate/less/variables";.
  • Wenn ich dies habe muss ich laut meinem Verständnis kompilieren. Und dann sollte es laufen und ich kann die gewünschten Änderungen vornehmen. Also die zu ändernden Dateien kopieren, ändern und in den gleichen Child Verzeichnissen ablegen.

Ist das so richtig oder befinde ich mich da auf dem Holzweg?

Vielen Dank für die Hilfe.

aet
 
Zuletzt von einem Moderator bearbeitet:

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
4.878
865
Berlin
Ich würde das base Verzeichnis direkt aus dem Child Template rauswerfen und einen symbolischen Link zum base vom evo setzen.
Warum: mit einem Update ist die Wahrscheinlichkeit hoch, dass sich etwas in der base.less ändert, so umgehst du jeglichen Stress das ständig neu rüber zu kopieren und zu bearbeiten.

Ich würde dann das less Verzeichnis aus dem slate/ in das my-theme/ oder wie auch immer du das dann nennen wirst kopieren und dann dieses Theme auch neu compilen, damit dort die Bootstrap.css erstellt wird.
Änderungen wirst du dann in der angelegten css/mytheme.css im Child vornehmen, wenn du dich nicht mit less beschäftigen möchtest.

Was du noch tun solltest: Die Fonts aus dem Evo solltest du auch in das Child kopieren, wenn du auch Upload Artikel hast dann solltest du auch die JS und css Dateien vom Evo ins Child kopieren, da es hier einen BUG im Shop gibt.

Wenn es dann später mal ein Update gibt, dann gehst du wie folgt vor:
Du überspielst das Evo Template, danach compilest du dein Theme neu, damit er Änderungen die an der base.less eventuell vorgenommen wurden übernimmt.
 
Zuletzt von einem Moderator bearbeitet:

AET

Aktives Mitglied
9. Januar 2018
63
6
Ich würde das base Verzeichnis direkt aus dem Child Template rauswerfen und einen symbolischen Link zum base vom evo setzen.
Warum: mit einem Update ist die Wahrscheinlichkeit hoch, dass sich etwas in der base.less ändert, so umgehst du jeglichen Stress das ständig neu rüber zu kopieren und zu bearbeiten.

Ich würde dann das less Verzeichnis aus dem slate/ in das my-theme/ oder wie auch immer du das dann nennen wirst kopieren und dann dieses Theme auch neu compilen, damit dort die Bootstrap.css erstellt wird.
Änderungen wirst du dann in der angelegten css/mytheme.css im Child vornehmen, wenn du dich nicht mit less beschäftigen möchtest.

Was du noch tun solltest: Die Fonts aus dem Evo solltest du auch in das Child kopieren, wenn du auch Upload Artikel hast dann solltest du auch die JS und css Dateien vom Evo ins Child kopieren, da es hier einen BUG im Shop gibt.

Wenn es dann später mal ein Update gibt, dann gehst du wie folgt vor:
Du überspielst das Evo Template, danach compilest du dein Theme neu, damit er Änderungen die an der base.less eventuell vorgenommen wurden übernimmt.

Hallo, und erstmal Danke für die Info's.

Wenn ich Deine Antwort richtig deute ist mein Vorgehen an sich richtig, aber wäre noch besser mit dem symbolischen Link.

Aber ist der symbolische Link nicht der den ich in der /Evo-Child/themes/base/less base.less mit @import "../../../../Evo/themes/slate/less/theme setze? Wenn nicht wie würde das aussehen?

Viele Grüße

aet
 
Zuletzt von einem Moderator bearbeitet:

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
4.878
865
Berlin
Nein, das ist ein Pfad den du angibst wo er die less Dateien vom base findet.

Hier mal ein Auszug aus meiner childTemplate/php/functions.php, das kannst du so bei dir im Child anlegen, nimm nicht die functions.php aus dem evo und kopiere die ins Child
cssLayout in der letzten Zeile ist hier der Name meines Child Templates, das muss natürlich angepasst werden.

Code:
<?php
include_once $smarty->get_template_vars('parent_template_path').'php/functions.php';

$cssTemplateConfig = \Shop::getSettings(array(CONF_TEMPLATE, CONF_CACHING));
$cssTemplateDir = $smarty->__get('template_dir')['frontend'];
$cssThemePath = $cssTemplateDir.'themes/'.$cssTemplateConfig['template']['theme']['theme_default'].'/';

if($cssTemplateConfig['caching']['caching_activated']=='N' || $cssTemplateConfig['template']['general']['EntwicklerModus']=='Y')    {
  \Shop::Cache()->flushAll();
  $smarty->clear_compiled_tpl();
}

if($cssTemplateConfig['template']['general']['themeSymLinks']=='Y' )    {
  if(isset($GLOBALS['template']->xmlData)) {
    if(($dir = opendir (PFAD_ROOT.'templates/Evo/themes/')) !== null) {
        $i=0;
      while (($file = readdir($dir)) !== false && $i++<100) {
        if($file != '..' && $file!='.' && is_dir(PFAD_ROOT.'templates/Evo/themes/'.$file) ) {
           @symlink ( PFAD_ROOT.'templates/Evo/themes/'.$file , PFAD_ROOT.'templates/'.$GLOBALS['template']->xmlData->cOrdner.'/themes/'.$file );
        }
      }
      closedir($dir);
    }
    $cssTemplateObj = new \stdClass();
    $cssTemplateObj->cWert ='N';
    \Shop::DB()->updateRow('ttemplateeinstellungen', array('cTemplate','cSektion','cName'), array('cssLayout','general','themeSymLinks'), $cssTemplateObj);
}

Und die template.xml erweiterst du dann mit diesem Eintrag:

Code:
        <Section Name="Allgemein" Key="general">
            <Setting Description="Symlinks der Themes prüfen / wiederherstellen, bitte lassen SIe diese Option bei Ihrer erstinstallation aktiviert" Key="themeSymLinks" Type="select" Value="Y">
                <Option Value="Y">Ja</Option>
                <Option Value="N">Nein</Option>
            </Setting>
        </Section>
        <Section Name="Allgemein" Key="general">
            <Setting Description="Entwicklermodus aktiv" Key="EntwicklerModus" Type="select" Value="N">
                <Option Value="Y">Ja</Option>
                <Option Value="N">Nein</Option>
            </Setting>
        </Section>

Das sorgt dafür das dein Child Template bei der Aktivierung die Symlinks automatisch erstellt.

Die Vorgehensweise wird eventuell nicht jedem gefallen, aber es ist der aus meiner Sicht beste Weg und sorgt eben dafür das du nicht ständig die Daten vom base/ anpassen musst.
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.567
374
Halle
Hallo aet,

Voraussetzungen:
Shop 4.06​
Evo Template mit Slate Theme​
Evo-Child Template mit dem Minimum-Template aus https://gitlab.com/falk.jtl/evo-child-vorlage/tree/master von Falk Prüfer angelegt (lässt sich auch aktivieren), jedoch noch nichts verändert.​
Hier bitte beachten, dass der master-Stand immer für den aktuellen Entwicklungsstand des Shop - aktuell also für Shop5 - angepasst ist und ggfs. für ältere Versionen nicht geeignet ist. (Dort fehlen z.B. die angesprochenen JS-Dateien, da das ab 5.0 nicht mehr notwendig ist.) Für Shop 4.06 bitte die Vorlage aus dem entsprechenden Branch verwenden: https://gitlab.com/falk.jtl/evo-child-vorlage/tree/release/4.06

  • Wenn ich jetzt das Child Template aktiviere ist es leer und ich muss einfach alle Einstellungen die ich vorher im Evo gemacht habe wieder im Child einstellen. Die Vererbungen des Evo auf das Child gelten nicht für die Grundeinstellungen, richtig?
Das ist richtig!
  • Das Thema Slate wird nicht angegeben, nur das my-evo. Soweit ich verstanden habe sollte ich jetzt im Child Template unter /Evo-Child/themes/base/less in den Dateien base.less und variables.less die Pfade anpassen. Dann sollte das Slate Thema laufen, richtig?
    • Also in der base.less - @import "../../../../Evo/themes/evo/less/theme"; - ändern zu @import "../../../../Evo/themes/slate/less/theme";.
    • Und in der variables.less - @import "../../../../Evo/themes/evo/less/variables"; - ändern zu @import "../../../../Evo/themes/slate/less/variables";.
Das ist grundsätzlich so richtig. Die Child-Vorlage ist so angelegt, dass man auf Grundlage eines bestimmten Evo-Themes mehrere eigene Theme-Variationen anlegen kann. Deshalb besitzt die Vorlage hier ein eigenes base-Verzeichnis und erbt nicht einfach alle Themes des Evo.
Anmerkung hierzu: Dieser Weg ist Updatesicher, da alle Angaben aus dem Parent importiert werden! Er erlaubt jedoch keine Anpassung über den Evo Theme-Editor, da dieser die Inhalte der Dateien direkt auswertet. Wenn also Anpassungen über den Theme-Editor gemacht werden sollen, müssen die Less-Dateien kopiert oder wie von css-umsetzung vorgeschlagen über Symlinks eingebunden werden. Wenn du deine Anpassungen dagegen direkt über eigene Less-Dateien vornimmst, ist das nicht notwendig.
  • Wenn ich dies habe muss ich laut meinem Verständnis kompilieren. Und dann sollte es laufen und ich kann die gewünschten Änderungen vornehmen. Also die zu ändernden Dateien kopieren, ändern und in den gleichen Child Verzeichnissen ablegen.
Ist das so richtig oder befinde ich mich da auf dem Holzweg?
Das sieht soweit gut aus ;)
 
Zuletzt bearbeitet:

AET

Aktives Mitglied
9. Januar 2018
63
6
Hallo FPrüfer,

vielen Dank für die Antwort. Ich habe die 4.06 Version genommen und soweit funktioniert es mit den .less Dateien. Jetzt muss ich mich nur noch an die Einbindung mit den Symlinks von css-umsetzung machen...
 

Jogi1962

Gut bekanntes Mitglied
24. März 2012
239
15
NRW
Hallo @css-umsetzung,

ich habe als child-Template das originale 4.06 child, Thema EVO. Habe alle Eintragungen gemacht, hochgeladen und es funktioniert.

Dann wollte ich deine Empfehlungen von oben umsetzen und bekomme beim compilieren die Fehlermeldung base/less/base.less existiert nicht und beim Seitenaufruf in Chrome "Die Seite funktioniert nicht."

Wo kann da der Fehler liegen?
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
4.878
865
Berlin
Vermutlich weil du die Symlinks nicht hast erstellen lassen.
Das Template kümmert sich selbst darum das es compiled wird. Aber die Option Symlink erstellen sollte nach aktiviert sein.
 

Jogi1962

Gut bekanntes Mitglied
24. März 2012
239
15
NRW
Hallo,
danke für die Antwort. Aber wo aktiviere ich das denn? Ich habe an deinen Vorlagen oben nichts geändert außer dem Namen "cssLayout".
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu JTL5.1.1 Nova-Template mit Child Mobiles Menü Templates für JTL-Shop 6
Neu Bug: Template Datein des Child-Templates werden nicht bei include anweisungen geladen JTL-Shop - Fehler und Bugs 2
Neu header.tpl wird nicht aus dem Child Template genommen JTL-Shop - Fehler und Bugs 5
Neu Schriftgröße des Menüs im Nova Child Template vergrößern Templates für JTL-Shop 2
Neu Nova Child wie _buttons.scss bearbeiten? Templates für JTL-Shop 1
Neu NOVA Child: Artikeldetailseite Tabs werden untereinander dargestellt anstatt zu faden Templates für JTL-Shop 2
Neu JTL Shop 5 - Anpassung Nova Child Theme Dienstleistung, Jobs und Ähnliches 0
Neu Nova Child Theme: Atikel Name in downloads.tpl abfragen? Technische Fragen zu Plugins und Templates 4
Neu NOVA Template Farbänderung in verschiedenen Bereichen Templates für JTL-Shop 0
Neu JTL SHOP 5.0.1 / NOVA-Template UVP/Rabattanzeige Artikelübersichten Allgemeine Fragen zu JTL-Shop 5
Neu Template Nova/layout/header_nav_search.tpl <li>? JTL-Shop - Fehler und Bugs 3
Neu Kritisch: JTL Shop 5.1 Bugs: Template: blackline, Demo-Dateien, Composer und co. JTL-Shop - Fehler und Bugs 22
Neu NOVA Template linke Navigation? Templates für JTL-Shop 2
Neu Animations Balken im Nova Template Farbe ändern Templates für JTL-Shop 2
Neu Mod Pagespeed webp konvertiung zerschiesst template Technische Fragen zu Plugins und Templates 0
Neu NOVA Template lässt sich nicht aktivieren JTL-Shop - Fehler und Bugs 4
Neu Shop 5 NOVA Template - Menü ohne Kategorien Allgemeine Fragen zu JTL-Shop 4
Fragen zum Update von 4 zu 5 - Template Migration Upgrade JTL-Shop4 auf JTL-Shop5 2
Neu Ebay Angebotsaktualisierung Evo Template bei neuem Artikelbild? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Template Anpassung UVP größer als VK Templates für JTL-Shop 1
Neu EU Energielabel Nova Template Templates für JTL-Shop 1
Neu NOVA Template - Megamenu Oberkategorie Link entfernen Templates für JTL-Shop 2
Neu NOVA Template - dunkler Hintergrund bei ausklappendem Megamenu Templates für JTL-Shop 4
Neu NOVA Template Preisspannen Slider noUI-touch-area sekundäre Farbe ändern Templates für JTL-Shop 2
Neu Brauche Hilfe bei einem Template - nicht alle if-Anweisungen funktionieren Dienstleistung, Jobs und Ähnliches 0
Komprimierung des HTML-Ausgabedokuments / Template Einstellung fehlt JTL Shop5 ? Einrichtung JTL-Shop5 0
Neu NOVA Template JTL Shop 5 eigenen Content-Block zwischen Footer und Produktdetailsseiten Technische Fragen zu Plugins und Templates 2
JTL Shop 5 Nova Template out of the box nicht responsiv? Einrichtung JTL-Shop5 2
Neu Template einzelnen Lagerstand anzeigen Templates für JTL-Shop 2
Neu Template Nova: Grauen Schatten Linie in anderer Farbe Templates für JTL-Shop 2
Neu Missing currency in "Zahlungseingang" mail template (English) JTL-Wawi - Fehler und Bugs 0
Neu Textfarbe "Neu hier? Jetzt registrieren!" in NOVA Template ändern Templates für JTL-Shop 2
Neu Ist eine Bildvergößerung im NOVA-Template möglich wie im EVO-Template Technische Fragen zu Plugins und Templates 0
Neu Nova-Template Menü anpassen Templates für JTL-Shop 0
Neu Fehler nach dem Template-Cache leeren JTL-Shop - Fehler und Bugs 2
Neu Probleme mit Zahlungsart Klarna Sofortüberweisung Gambio-Connector 0
Neu Nicht zusammenfassbare Aufträge mit der selben Adresse farblich kennzeichen JTL-Workflows - Ideen, Lob und Kritik 0
Neu JTL FFN Import Aufträge über CSV mit Gebinde GTIN Schnittstellen Import / Export 0
Neu Artikel mit Variation wird zu Freiposition User helfen Usern - Fragen zu JTL-Wawi 2
Neu Verknüpfung laufendes eBay Angebot mit Vorlage? Einrichtung und Installation von JTL-eazyAuction 1
Neu Fehler "Typ " 'Decimal' für Eigenschaft 'Anzahl' konvertiert werden. " in Worflow mit DotLiquid JTL-Workflows - Ideen, Lob und Kritik 0
Neu Anbindung Kaufland mit Unicorn2 Schnittstellen Import / Export 2
Neu Crossselling mit Connector 2.12.0 und SW 5.7.3 Shopware-Connector 1
Neu Unter Eigene Inhalte eine Seite hinzufügen mit $session_id Allgemeine Fragen zu JTL-Shop 0
In Diskussion Workflow für Auftrag mit Verlust JTL-Workflows - Ideen, Lob und Kritik 4
Neu Amazon VCS mit falschen Preisen in der Rechnung User helfen Usern - Fragen zu JTL-Wawi 0
In Diskussion Workflow mit Erweiterte Eigenschaft MaxHoehe JTL-Workflows - Ideen, Lob und Kritik 2
Neu JTL Shop 5.1 kritischer Fehler bei Installation mit Demodaten Installation / Updates von JTL-Shop 1
Neu 💙 Neues Plugin: FAQ mit strukturierten Daten (für JTL-Shop 5) Plugins für JTL-Shop 0
Neu JTL SHOP Newsletter mit Anhang Allgemeine Fragen zu JTL-Shop 0

Ähnliche Themen