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.297
2.492
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.297
2.492
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
Neu Umsatzsteuernummer von Kunden wird nicht in Wawi übertragen Shopify-Connector 0
Neu Fehlermeldung nach der Umstellung von DHL Versenden 4.0 JTL-Track&Trace - Fehler und Bugs 0
Neu Die verwendete Version von JTL-Wawi wird nicht mehr unterstützt. Bitte nutzen Sie die Version 2.0.0.0 User helfen Usern - Fragen zu JTL-Wawi 1
Neu Fehler beim Abgleich, aber nur 1 einer von 3 Shopify Shops Shopify-Connector 2
Neu Zahlung von Kunden aus dem EU Ausland, Mwst falsch Plugins für JTL-Shop 1
Neu Installation von Plugin PayPal Check-Out fehlgeschlagen, keine Verbindung zum Webshop Plugins für JTL-Shop 6
Neu Bilder von Plattform A auch für Plattform B aktivieren Arbeitsabläufe in JTL-Wawi 1
Neu Frage zur Übertragung von JTL -> Shopify Shopify-Connector 1
Neu CSS GeoIP MwSt.-Finder 2.7.1 verhindert das Anlegen von Shop-Kundenkonten aus der Wawi Plugins für JTL-Shop 1
Rechnungen an Rechnungspostfächer von Kunden schicken ohne dass JTL auch andere Dokumente dorthin schickt? JTL-Wawi 1.11 3
Neu Onlineshop von Wawi entfernen Onlineshop-Anbindung 2
Neu Shop 5.6.1: Probleme beim Entfernen von Artikeln aus dem Warenkorb JTL-Shop - Fehler und Bugs 5
Neu Artikel Rücknahme über Kassenbon von letzter Woche in JTL-Pos JTL-POS - Ideen, Lob und Kritik 2
Artikelbezeichnung auf der Rechnung anpassen von "Artikelname" in "Kurzbeschreibung" JTL-Wawi 1.10 4
Neu DSGVO – Automatisierte Löschung von Kundendaten nach 10 Jahren (JTL-Wawi / JTL-Shop) User helfen Usern - Fragen zu JTL-Wawi 1
Update von 1.11.6 auf 1.11.7: JTL Worker verbindet nicht mehr mit Datenbank (WaWi schon) JTL-Wawi 1.11 1
Neu Zyklische Fehler beim Listen von T-Shirts Amazon-Lister - Fehler und Bugs 3
Neu Verbindungsabbruch von Wawi zu POS Einrichtung / Updates von JTL-POS 0
Neu In welcher Datenbank-Tabelle sind Wertelisten und deren IDS von Eigenen Felder gespeichert? User helfen Usern - Fragen zu JTL-Wawi 8
Neu Import von Rechnungen oder Lieferungen aus anderem System Starten mit JTL: Projektabwicklung & Migration 0
Neu OPC friert beim speichern von Änderungen ein nach JTL-Shop Update von Version 5.1.5 auf 5.6.1 JTL-Shop - Fehler und Bugs 0
JTL-Ameise: Export von Verkäufen auf Komponenten-Ebene JTL-Wawi 1.10 6
Neu Erfahrungsbericht von JTL zu Myfactory Smalltalk 0
Neu von JTL-Wawi-Version 1.10.16.0 ist kein Update...möglich Installation von JTL-Wawi 2
Neu Produktverkauf von max. 24 Stück am Tag - wie umsetzen ? User helfen Usern - Fragen zu JTL-Wawi 1
Neu Ständig neue Angebote von JTL und Fallen bei Unaufmerksamkeit Smalltalk 26
Datenbank von Inaktiven Artikeln bereinigen JTL-Wawi 1.11 2
Neu WAWI 1.11.2 Änderung von E-Mailadresse in Rechnung hat keine Auswirkung JTL-Wawi - Fehler und Bugs 3
JTL Ameise - Export von HTML und wieder Re-Import JTL-Wawi 1.11 6
Abschalten von Verfügbarkeitsmails von Kunden JTL-Wawi 1.10 5
Neu SQL Worker.tStatus - Bedeutung von nStatus? JTL Ameise - Eigene Exporte 2
Neu 📢 Plugin "Kreditlimit Plugin für JTL-Shop 5 " von CIN GmbH Plugins für JTL-Shop 0
Nach Update auf 1.11.6 werden die Preisänderung nicht mehr von der Wawi an Amazon übertragen JTL-Wawi 1.11 0
Neu DHL versenden 4.0 - NullReferenceException beim Erstellen von Labels JTL-ShippingLabels - Fehler und Bugs 8
Neu Wechsel von JTL Shop 5 zu Shopify / ERP-Connector Produkte mit Variationen werden nicht übertragen Shopify-Connector 1
Neu Update von Wawi 1.3 auf Wawi 1.8 JTL-Wawi 1.6 1
Neu JTL übernimmt immer Standard Versand von Amazon Amazon-Anbindung - Fehler und Bugs 0
Neu Referenznummer Grösse auf den Versand Etiketten von DPD-Cloudservice und GLS Api JTL-ShippingLabels - Ideen, Lob und Kritik 0
Nachträgliche Änderung von Steuerart auf Innergemeinschaftliche Lieferung nicht möglich JTL-Wawi 1.11 4
Neu WMS CSV Import von Lieferscheinen Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 1
Neu Grundpreisanzeige von Liter, Meter und Stück JTL-Shop - Fehler und Bugs 5
Neu Shopware Connector sendet keine Zahlungs und Versandinfos von WAWI zu SW6 Shopware-Connector 7
Neu Alternative zu https://wawi-db.jtl-software.de/ - Wawi-Diff zur Darstellung von Datenbank-Änderungen User helfen Usern - Fragen zu JTL-Wawi 6
Neu Kundengruppenrabatt: Rabattbasis von UVP auf Bruttopreis pro Artikel umstellbar? Allgemeine Fragen zu JTL-Shop 0
Neu Übergabe von Pickliste nach Packtisch User helfen Usern - Fragen zu JTL-Wawi 7
Neu wnm Hinweisfenster - Update von 1.1.7 auf 1.1.8 funktioniert nicht Plugins für JTL-Shop 7
Update von 1.9.6.5 auf die 1.11.5 problemlos möglich? JTL-Wawi 1.11 7
Neu Sichtbarkeit von Artikeln in WooCommerce Onlineshop-Anbindung 0
JTL Workflow - Email addresse von Rechnungsadresse JTL-Wawi 1.9 5
Neu JLT Shop Update 6.1 von 5.5.3 - Fehlgeschlagen Installation / Updates von JTL-Shop 5

Ähnliche Themen