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
7.764
2.190
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
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
7.764
2.190
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
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
144
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 1x Kategorie Auto Motorrad Teile immer Auto Motorrad Teile eBay-Anbindung - Fehler und Bugs 0
Neu Server Error 500 nach dem Installieren von JTL Theme Editor Plugins für JTL-Shop 3
Neu seit 1.8.25 kein Aufschalten von Angeboten merh möglich mit 1.7.14.0 Amazon-Anbindung - Fehler und Bugs 8
Neu cName von tArtikelBeschreibung zweisprachig User helfen Usern - Fragen zu JTL-Wawi 1
Neu zweiten Mandanten für Ankauf von Ware? gleiche Firma, gleiche Person. Lizenzen? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Rechnungsanzeige Amazon von "Bar" auf "Zahlung via Amazon Pay" Amazon-Anbindung - Fehler und Bugs 1
Neu Sichtbarkeit von Artikeln / "Visibility" Feld in DB PrestaShop-Connector 0
Buchhalterische Abwicklung von Gutscheinen aus Rechnungskorrekturen Allgemeine Fragen zu JTL-Vouchers 0
Löschen von Verkaufskanal nicht möglich JTL-Wawi 1.10 2
Hochladen von Artikel zu Ebay klappt nicht JTL-Wawi 1.10 13
JTL WAWI GUI Update von 1.9.8.0 auf 1.10.13.1 nicht möglich WAWI reagiert nicht JTL-Wawi 1.10 3
Neu Speicherort vom Worker eingelesenen Angebote von Amazon User helfen Usern - Fragen zu JTL-Wawi 2
Nach dem Import von Aufträgen kein Artikel Preis JTL-Wawi 1.9 1
Neu Workflow zur Zählen von Retouren und Bestellungen von einem Kunden JTL-Workflows - Ideen, Lob und Kritik 1
Neu Hat jemand Erfahrung mit der Anbindung von TikTok Shop über Shopify? Einrichtung und Installation von JTL-eazyAuction 0
Neu Versanddaten Import -> Automatisches Abschließen von Dropship Bestellungen möglich? User helfen Usern 1
Neu Hilfe beim Einrichten von JTL-Wawi mit unternehmensspezifischen Artikeldaten Arbeitsabläufe in JTL-Wawi 14
Neu Anbindung von Global E als Versanddienstleister in JTL – wer wäre dabei? JTL-Wawi - Ideen, Lob und Kritik 0
Neu Entfernung von Elementen aus dem Template Templates für JTL-Shop 1
Neu Update von 1.9.8.0 auf 1.10.13.1 Fehlerhafte Variationswert - Sortiernummern JTL-Wawi - Fehler und Bugs 3
Neu Rechnungsdatenservice 2.0 : Wie initial Übergabe von Rechnungen mit Belegtyp (Belegkreis) "Rechnungsausgang" an Datev Unternehmen online? User helfen Usern - Fragen zu JTL-Wawi 1
Neu Update von 5.1.8 auf 5.2.1 inkl. PHP Umstellung von 7.4 auf 8.x funktioniert einfach nicht. 500er Serverfehler Installation / Updates von JTL-Shop 13
Neu Lagerkommentar von Stücklistenartikel auf Lager-Packliste ausgeben Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Neu Unnötiger Fehler beim Import von Kundendaten JTL-Shop - Fehler und Bugs 0
Neu Einstellen von Variationen ohne Aufpreis (+) Angabe in der Variationsauswahl Allgemeine Fragen zu JTL-Shop 1
Neu Shopupdate von 5.4.0 auf 5.5.2 Fehlercode: 500 Internal Server Error Installation / Updates von JTL-Shop 7
Neu Importieren von Artikelmerkmalen mit der Ameise JTL-Ameise - Ideen, Lob und Kritik 1
Menge von 0,0 auf 1 ? JTL-Wawi 1.10 14
Probleme beim Import von eBay-Produkten in JTL – neue Artikel werden nicht übernommen eBay-Anbindung - Fehler und Bugs 5
Neu Aufschlüsselung von Tabelle tQueue ?? Hat wer Infos darüber?? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Verkäufe von Stücklistenartikel über FBA werden im Lager nicht abgezogen Amazon-Anbindung - Fehler und Bugs 0
Vererben von Kindartikel ek auf den Vaterartikel JTL-Wawi 1.10 1
Neu JTL WaWai Artikel aus Angebote von Plattformen Amazon+Otto erstellen Einrichtung und Installation von JTL-eazyAuction 0
Neu gleichzeitiges vorkommen von mehreren Artikeln in einem Bon Allgemeine Fragen zu JTL-POS 0
Verkaufskanäle können nicht geöffnet werden, da diese bereits von einem anderen Benutzer bearbeitet werden JTL-Wawi 1.9 2
Neu Merkmalfilter - Nur Merkmale von Kindern filtern Allgemeine Fragen zu JTL-Shop 1
Neu Texteditor Hinweis Plugin von Webstollen Plugins für JTL-Shop 0
In Diskussion Automatisches Ausliefern von Gutschein funktioniert nicht JTL-Workflows - Ideen, Lob und Kritik 2
Neu Löschen von Lieferantenbestellungen verhindern User helfen Usern - Fragen zu JTL-Wawi 0
Neu Behandlung von JTL Shop Coupons und Retouren in JTL Wawi Arbeitsabläufe in JTL-Wawi 0
Import mit Ameise von "Varianten" JTL-Wawi 1.10 1
keine Eazybusiness Datenbank beim öffnen von JTL WaWi JTL-Wawi 1.7 3
JTL Connector <-> JTL WAWI Keine neune Importe von Aufträgen JTL-Wawi 1.9 0
Neu Zustandsbeschreibung wird beim auflisten von Produkten nicht übertragen Amazon-Anbindung - Fehler und Bugs 1
Export WaWi Daten von EcomData über BackUp Funktion - Wiedereinspielen am PC JTL-Wawi 1.10 7
Neu JTL Shop: Ausblenden von Unterkategorien (In der Mitte) möglich ? Allgemeine Fragen zu JTL-Shop 0
Neu .php-cs-fixer.php - nicht identisch mit den Dateien der aktuellen Version von JTL-Shop JTL-Shop - Fehler und Bugs 3
Neu Getrennte Auswertung von Pick- und Packleistung möglich? JTL-WMS / JTL-Packtisch+ - Ideen, Lob und Kritik 1
Beschaffung/Bestellungen Steuerung von Mwst % in Positionen ohne Lieferantenzuordnung und Freipositionen. JTL-Wawi 1.10 0
Neu Umgang mit fehlerhaften Rechnungen von Verkäufern Smalltalk 0

Ähnliche Themen