Neu Auto-Compiling von Themes-LESS

mediaDESIGN.SK

Aktives Mitglied
7. Januar 2019
35
3
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
6.671
1.602
Berlin
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
3
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
6.671
1.602
Berlin
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
3
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
59
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
143
8
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
Neu Coupon nicht vom Warenwert sondern von den Artikeln abziehen?!? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Updatepolitik und Testen von Software - aktuell 5.2.4 Installation / Updates von JTL-Shop 8
Neu JTL <-> Shopware 6 - Maximale Anzahl von Kundengruppen? Shopware-Connector 1
Neu Datenmigration von anderer WaWi auf JTL-WaWi Starten mit JTL: Projektabwicklung & Migration 8
Neu Artikel von JTL mit Ebay verbinden in Easy Action Einrichtung und Installation von JTL-eazyAuction 2
Neu Erreichbarkeit von Seiten mit 0 Bestand in 5.3.1 JTL-Shop - Fehler und Bugs 2
Neu Artikel im Warenkorb wird von 1 auf null runtergesetzt. Anstatt es zu entfernen wird es automatisch wieder auf 1 gesetzt Allgemeine Fragen zu JTL-Shop 6
Neu So ändern Sie den Status von amazon ASIN über die Importdatei in „Aktiv“. JTL Ameise - Eigene Exporte 0
Neu eBay zusammenfassen von Aufträgen und Buchhaltung User helfen Usern - Fragen zu JTL-Wawi 0
Neu CSV-Export von Produkten aus bestimmter Kategorie Allgemeine Fragen zu JTL-Shop 0
Fehler beim erstellen von Aufträgen JTL-Wawi App 2
Worker hat Zeitlücken von vielen Stunden JTL-Wawi 1.8 1
Neu Bestandsanzeige von Stücklistenartikeln Allgemeine Fragen zu JTL-POS 0
Nach Aufruf von Stored Procedure 'Kunde.spKundeUpdate' schwere Fehler in JTL (z.B. Kundenliste, Workflow-Editor) JTL-Wawi 1.8 2
Neu JTL-Shop 5 Liste von CSV-Export Variablen gesucht Allgemeine Fragen zu JTL-Shop 1
Neu Datenumzug von Xentral ERP Software auf JTL-Wawi Schnittstellen Import / Export 4
Neu Artikel nach Übertragung von JTL auf geplant im Jahr 2030 WooCommerce-Connector 2
Neu Stücklisten mit puffer Bezug von anderen Artikeln User helfen Usern - Fragen zu JTL-Wawi 1
Neu Löschen von Nachrichten im Servicedesk Servicedesk (Beta) 3
Entfernen von Lieferzeiten bei Artikeln ohne Lieferzeiten Einrichtung JTL-Shop5 6
Neu Was steckt hinter der Zahl von 53 Bildern auf Ebay bei Variationsartikeln (und einer unsinnigen Fehlermeldung der Wawi)? JTL-Wawi - Fehler und Bugs 2
Bestand von Kinderartikeln wird im Vaterartikel zusammenaddiert JTL-Wawi 1.8 1
Neu beim Umstieg von unicorn auf SCX Bilder aktivieren Otto.de - Anbindung (SCX) 1
Neu Filtereinstellungen: wenn Sonderpreis bei Vater- oder Kindartikeln, Anzeige von Vater- UND Kindartikeln User helfen Usern - Fragen zu JTL-Wawi 5
Neu gelöst: Update von 5.3.0 auf 5.3.1 - Dateien hochgeladen - immernoch alte Version Gelöste Themen in diesem Bereich 6
Neu Fehler beim Bearbeiten von PLZ & Ort im Kundenkonto (Update 5.3.0) JTL-Shop - Fehler und Bugs 6
Neu Wechsel WAWI Hosting von JTL mit RDP auf ecomDATA User helfen Usern - Fragen zu JTL-Wawi 2
Neu Fehler bei Bearbeitung von Designvorlagen eBay-Designvorlagen - Fehler und Bugs 0
Neu Mitgabe von Nährwertangaben WooCommerce-Connector 2
Neu E-Mail-Adresse beim Versand von Lieferantenbestellungen User helfen Usern - Fragen zu JTL-Wawi 0
Neu JTL 1.8.12.0 - Artikelattribut für Shop importieren - Format CSV-Datei / Hilfe bei Import von individuellen Attributen für JTL-Shop (googlekat) JTL-Ameise - Ideen, Lob und Kritik 1
Neu Bilder von Merkmalen werden nicht angezeigt Gelöste Themen in diesem Bereich 5
Neu Shopify Erhöhung der Varianten von 100 auf 2000 - Connector App Problem Shopify-Connector 4
Neu Bestimmte Artikel von JTL-Search ausschließen JTL-Search 0
Artikel Netto Preis von 4 Nachkommastellen auf 2 umstellen JTL-Wawi 1.7 5
Artikelabgleich verlangsamt sich automatisch von Wawi JTL-Wawi 1.8 2
Formatierungsfehler in XML bei Verwendung von dotliquid kaufland.de - Anbindung (SCX) 2
Neu Produktfeld "Produktkategorie" von JTL nach Shopify? Shopify-Connector 0
Alternativpositionen und gültig von bis JTL-Wawi 1.8 0
Neu Fehler beim erstellen von Aufträgen. Digitale Unterschrift im Auftrag. JTL-Wawi - Fehler und Bugs 0
Export von Bestellungen als Excel JTL-Wawi 1.6 1
Neu Sortierung von Artikel nach Preis absteigend Allgemeine Fragen zu JTL-Shop 4
Ameisen Import von Aufträgen: Zahlungsziel in Tagen immer 0 JTL-Wawi 1.8 1
Neu Menüleiste wird plötzlich in der Mitte von der Seite angezeigt Allgemeine Fragen zu JTL-Shop 0
Neu 💡Umsatzsteuer- und Internationalisierungs-Expertise von unserem neuen Partner countX News, Events und Umfragen 4
Neu Update von 5.1.5 auf 5.2.4 Installation / Updates von JTL-Shop 1
EAN-Code von Umverpackungen hinterlegen JTL-Wawi 1.7 3
Neu Update von Wawi 17.15.4. auf 18.12.0 geht nicht, weil Primary voll ist JTL-Wawi - Fehler und Bugs 4
In Diskussion Fehler beim Versenden von E-Mails: "Could not convert socket to TLS" JTL-POS - Fehler und Bugs 1
Neu Error beim öffnen von Artikeln und Unterkategorien in zweiter Sprache JTL-Shop - Fehler und Bugs 1

Ähnliche Themen