Neu Auto-Compiling von Themes-LESS

mediaDESIGN.SK

Aktives Mitglied
7. Januar 2019
35
4
Gera (Thüringen)
Firma
mediaDESIGN St. Kraft
Hallo,
ich modifiziere für Shops die Themes und bearbeite dazu laufend die LESS-Scripte. Es nervt jedoch sehr, dass man dazu immer erst nach jeder kleinen Änderungen im Theme-Editor-Plugin die Kompilierung veranlassen muss.
Hier https://opensource-blog.de/jtl-shop-4-template-less-auto-kompilieren/ habe ich einen vielversprechenden Lösungsvorschlag gefunden, der es ermöglichen soll, dass bei jedem Frontend-Seitenreload die Kompilierung automatisch stattfindet. Aus anderen CMS/ Shop-Systemen kenne ich ähnliche Möglichkeiten eine Entwicklermodus zu aktivieren.

Leider bekomme ich im Frontend dann einen Fehler, wenn ich das wie in dem Beitrag beschrieben implementiere
Code:
{"fn":"message","data":{"type":"danger","msg":"CSRF-Token fehlt."}}
. Sieht nach eine JSON-Objekt aus. Es funktioniert also nicht.

Der Link deutet an, dass eine Lösung für Shop 4 eigentlich ganz einfach wäre. Deshalb wundere ich mich, dass das nicht von Haus aus als Entwicklermodus-Feature angeboten wird. Wäre doch echt eine enorme Erleichterung.

Nun also meine Fragen:
  • Kenn jemand eine Lösung wie man das mit der LESS-Kompilierung eleganter hinbekommt?
  • Gibt es evlt. ein ähnlich versteckte Funtion wie
    Code:
    define('PLUGIN_DEV_MODE', 0);
    mit der man das in der Shop-Ini veranlassen kann?
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
8.051
2.300
Berlin
Firma
css-umsetzung
Du arbeitest doch bestimmt auch mit einem Child Template, bau dir doch dort eine Überwachung ein die schaut, ob die less Dateien jünger sind als die bootstrap Datei.

Ich habe so etwas in meinem Child integriert, über die Einstellungen kann ich dann bestimmen ob es eine Überwachung gibt oder nichts oder es dauerhaft neu generiert wird.
 

mediaDESIGN.SK

Aktives Mitglied
7. Januar 2019
35
4
Gera (Thüringen)
Firma
mediaDESIGN St. Kraft
Ja, ich arbeite mit einem Evo- Child-Template.
Wie man so eine "Überwachung" einbaut, überfordert jedoch mein bisher erkämpftes Wissen.
Habe gerade erst mein erstes Plugin geschrieben (E-Mail-Cloaking/Verschleierung).
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
8.051
2.300
Berlin
Firma
css-umsetzung
Das regelst du dann alles in deiner functions.php du brauchst hierfür kein Plugin.

Ich mach daraus auch kein Geheimnis wie ich das ganze angegangen bin: hier der Teil der in meiner function.php dafür verantwortlich ist, eventuell hilft dir das als Einstieg:

Code:
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'].'/';


function cssCompileLess($cssThemePath='',$cssTemplateDir='',$cssTemplateConfig=array(), $lessFile='', $cssFile='') {
    global $smarty;
    if(($dir = opendir($cssThemePath.'less'))) {
        $lasttime = @filectime($cssThemePath.$cssFile);
        while ($file=readdir($dir)) {
            if($cssTemplateConfig['template']['general']['CompileCss']=='A' || !$lasttime || $file != '.' && $file != '..' &&  $lasttime <  filectime($cssThemePath.'/less/'.$file)) {
                closedir($dir);

                \Shop::Cache()->flush('tpl_mnfy_dt_.'.$cssTemplateConfig['template']['theme']['theme_default'].basename($smarty->get_template_vars('parent_template_path')).'.fcache');

                 require_once $cssTemplateDir.'php/Less/Autoloader.php';
                Less_Autoloader::register();
                $parser = new Less_Parser();

                $parser->parseFile($cssThemePath.'less/'.$lessFile,'/');
                $css = $parser->getCss();

                file_put_contents($cssThemePath.$cssFile, $css);

                break;
            }
        }
    }
}

if($cssTemplateConfig['template']['general']['CompileCss']!='N')    {
    cssCompileLess($cssThemePath,$cssTemplateDir,$cssTemplateConfig,'theme.less','bootstrap.css');
}

Wie du hier siehst bringe ich mit meinem Child einen eigenen Less Compiler mit, da ich dann weiß wo er liegt und was er macht.


in der Template.xml habe ich dann das hier:

Code:
        <Section Name="Allgemein" Key="general">
            <Setting Description="less compiler" Key="CompileCss" Type="select" Value="N">
                <Option Value="N">Nein</Option>
                <Option Value="A">dauerhaft aktivieren</Option>
                <Option Value="U"><![CDATA[&Uuml;berwachungsmodus]]></Option>
            </Setting>
        </Section>
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: mediaDESIGN.SK

mediaDESIGN.SK

Aktives Mitglied
7. Januar 2019
35
4
Gera (Thüringen)
Firma
mediaDESIGN St. Kraft
Recht herzlichen Dank.
Musste natürlich erst den Autoloader bei mir reinbasteln, damit es funktioniert.
Super! Produktivität um 50% gesteigert!

Bei A wird immer zwingend kompiliert, bei U nur wenn neue Scriptversionen vorliegen?
 

webksde

Aktives Mitglied
30. August 2012
60
5
32457 Porta Westfalica
Tausend Dank @css-umsetzung, ein Traum!

Kleine Anpassung:

Ihr könnt auch den Release statt des source codes von: https://github.com/oyejorge/less.php nutzen.

Einfach diese beiden Zeilen ersetzen:

PHP:
require_once $cssTemplateDir.'php/Less/Autoloader.php';
Less_Autoloader::register();

gegen:

PHP:
require_once $cssTemplateDir.'php/Less/Less.php';

=================

EDIT:

Option für Sourcemap Generierung ergänzt:

template.xml:

XML:
<Setting Description="less sourcemap" Key="LessSourcemap" Type="select" Value="N">
   <Option Value="N">Nein</Option>
   <Option Value="Y">Ja</Option>
</Setting>

functions.php:

Zeile ersetzen $parser = new Less_Parser();

PHP:
$options = array(
  'sourceMap' => $cssTemplateConfig['template']['general']['LessSourcemap'] == 'Y' ? true : false
);
$parser = new Less_Parser($options);
 
Zuletzt bearbeitet:

ckOne

Gut bekanntes Mitglied
6. Oktober 2015
145
9
Gibt es hierzu schon ein Beispiel wie man den AutoCompiler in JTL- Shop 5 am Besten realisieren kann?
Vielen Dank!
 
Ähnliche Themen
Titel Forum Antworten Datum
Frage zu Bestellungen -> Wechsel von Lexware Wawi JTL-Wawi 1.11 0
Neu Nachnahme im JTL-Shop – Best Practices zur Vermeidung von Nichtannahmen User helfen Usern - Fragen zu JTL-Wawi 1
Neu Kundenwechsel von B2C auf B2B bekommt B2C angezeigt User helfen Usern - Fragen zu JTL-Wawi 5
Neu Verzögerung beim Abruf von Bestellungen? 16.12. ab 19:30 Amazon-Anbindung - Fehler und Bugs 2
Neu Wie lässt sich der Lieferstatus von Aufträgen per SQL abfragen? User helfen Usern - Fragen zu JTL-Wawi 8
Smart App Control blockiert start von JTL-Wawi JTL-Wawi 1.11 0
Neu Ich möchte konfigurieren, dass Artikel mit einem Lagerbestand von 0 nicht mehr zu einer Bestellung hinzugefügt werden dürfen Eigene Übersichten in der JTL-Wawi 1
Kein E-Mail-Versand von Versandbestätigung und Zahlungsbestätigung JTL-Wawi 1.10 0
Nach Update auf 1.11.4 (von 10.13.1) werden keine Artikel unter F2 Artikel mehr angezeigt, sind aber da! JTL-Wawi 1.11 0
Neu Import von Variationen schlägt fehlt JTL-POS - Fehler und Bugs 0
Neu Nachträglicher Import von Bestellungen etc Amazon-Anbindung - Ideen, Lob und Kritik 0
Neu Pflicht-Checkbox in Abhängigkeit von Merkmal? Betrieb / Pflege von JTL-Shop 1
Bilder von Kindartikeln JTL-Wawi 1.10 1
Neu Umrechnung von Verkaufsmengen in der Auftragserfassung Arbeitsabläufe in JTL-Wawi 1
Kein flüssiges Update von 1.10.14.3 zu 1.11.4 JTL-Wawi 1.11 4
Terminierte Entsperrung von B2B-Aufträgen JTL-Wawi 1.9 2
Druck von Versandetiketten auf Zebra Drucker ZM400, ZT410 nicht möglich JTL-Wawi 1.11 8
Neu Ist es korrekt, dass Belegdaten von Amazon (VCS) mit einer etwa 7-tägigen Verzögerung in WAWI landen? Amazon-Anbindung - Fehler und Bugs 8
Neu Ärger mit CountX: Verzögerung bei der Bearbeitung von VCS-Daten in WAWI führt zu unvollständigen Steuerdaten User helfen Usern - Fragen zu JTL-Wawi 0
Neu Unterstützung bei JTL FFN Retouren – Fehler in der API-Übertragung von Returnless Starten mit JTL: Projektabwicklung & Migration 0
Update von 1.6 auf ? JTL-Wawi 1.6 4
Neu Von jetzt auf gleich Shop down "ohne" Fremdeinwirkung JTL-Shop - Fehler und Bugs 5
Neu Keine automatische Übernahme von Änderungen in JTL trotz Abgleich? Onlineshop-Anbindung 3
Neu Bilder von Kinderartikeln auf Vaterartikel kopieren via SQL Eigene Übersichten in der JTL-Wawi 2
Neu Probleme bei der Umstellung von Varkombi auf Konfigurationsartikel User helfen Usern - Fragen zu JTL-Wawi 0
Fehler beim Verknüpfen von JTL-FFN mit Wawi – „Anmeldung nicht möglich“ JTL-Wawi 1.11 1
Wichtig 💡Die Retourenplattform für Webshops – Expertise von unserem neuen Partner Returnless News, Events und Umfragen 0
Neu Übermittlung eigener Felder von FFN-Händlern an Fulfiller Arbeitsabläufe in JTL-Wawi 0
Datenabgleich von WooCommerce auf JTL Wawi 1.9.7.0 JTL-Wawi 1.9 0
Neu Downgrade von 3 JTL-Shop-Lizenzen auf 1 – Frage zur Umstellung der Domains User helfen Usern - Fragen zu JTL-Wawi 1
Neu eazyAuction holt keine Bestellung mehr von Amazon ab, im Logbuch "Fehler" ohne weitere Angabe Amazon-Anbindung - Fehler und Bugs 1
Neu Wer hat 2025 mit Xentral Erfahrungen gesammelt? Wechsel von JTL‑Wawi in Sicht Smalltalk 17
Neu Anzeige von mehreren Kundengruppenpreisen im Shop Templates für JTL-Shop 0
Neu FBA-Lagerbestand wird nicht mehr eingelesen - Fehler beim Verarbeiten von Amazon Events - FbaInventoryImported: Das angegebene Argument liegt außerha Amazon-Anbindung - Fehler und Bugs 13
Neu Dropshipping Import/Export von JTL zu JTL User helfen Usern - Fragen zu JTL-Wawi 6
Neu Umzug von Shopify auf JTL Umstieg auf JTL-Shop 1
Neu Einkaufsliste - "% von Mindestbestand" als Spalte JTL-Wawi - Ideen, Lob und Kritik 0
Suche Hilfe beim Anpassen (Design) von Druck- / Email- / Exportvorlage JTL-Wawi 1.10 3
Neu PC-Umzug mit Datenbanksicherung von JTL-Wawi 1.5.48 User helfen Usern - Fragen zu JTL-Wawi 5
Neu JTL Shop Update von 5.3.3 auf 5.6 mit der Community Free Edition - WaWi funktion weiter gegeben? User helfen Usern - Fragen zu JTL-Wawi 1
Probleme mit dem Einstellen von Artikeln auf Amazon über JTL Wawi mit dem Lister 2.0 Amazon-Lister - Fehler und Bugs 6
Neu Update von JTL-Wawi von 1.6 auf 1.9 Installation von JTL-Wawi 12
Neu Von 0.99923 auf aktuell - mir fehlen die 1.5.52. und die 1.8.10.0 Installation von JTL-Wawi 1
Neu Kann man das Shop-Guthaben von Kunden per Workflow beeinflussen? User helfen Usern - Fragen zu JTL-Wawi 0
Angebotsimport von eBay automatisieren JTL-Wawi 1.10 1
Neu JTL Shop - Umwandlung Domain von Test auf Live Allgemeine Fragen zu JTL-Shop 1
JTL-Workflow | Automatisches Speichern von Rechnungen möglich? JTL-Wawi 1.9 2
Neu Kurze Rückfrage zur Einrichtung von 2. Sprache im Shop Allgemeine Fragen zu JTL-Shop 3
Steuersätze von EU Käufern greift nicht Einrichtung JTL-Shop5 3
Neu Export von nicht zugewiesenen Zahlungen JTL-Ameise - Fehler und Bugs 1

Ähnliche Themen