Wolltest du schon immer mal dynamisches CSS (less, scss oder turbine) in TYPO3 nutzen? DynCSS will dieses Problem mit Adaptern für die jeweilige Sprache lösen. Dazu wird DynCSS als Extension in TYPO3 eingebunden. Bei Änderungen werden die entsprechenden Dateien neu geparst und die entsprechende Ausgabedatei wird alternativ eingebunden. Um DynCSS zu nutzen wird die jeweilige Datei wie jede andere CSS Datei in TYPO3 eingebunden.
page.includeCSS.testLess = EXT:dyncss_test/Resources/Public/Stylesheets/Example.less |
Intern passiert nun folgendes:
- Über einen Eintrag in der ext_localconf.php wurde ein Parser für less registriert (EXT:dyncss_less)
- Durch einen Hook im PageRenderer werden alle CSS Dateien auf passende Dateiendungen für den jeweiligen Parser überprüft, falls für die Dateiendung ein Parser registriert wurde, wird dieser ausgeführt
- Der Parser legt eine Kopie der zu parsenden Datei an und ersetzt Variablen
- Der Parser erzeugt die CSS Datei
- Pfade in der CSS Datei alá url() … werden an den neuen Standort der Datei angepasst
- Die erzeugte CSS Datei wird an Stelle der Ausgangsdatei eingebunden.
Dabei ist EXT:dyncss in der Lage Variablen neu zu belegen. Sollte beispielsweise in einer Less Datei für Links die Farbe rot definiert sein (@LinkColor: #ff0000;), so kann diese mit wenigen Zeilen TYPOScript angepasst werden.
plugin.tx_dyncss { overrides { LinkColor = TEXT LinkColor { value = {$linkColor} } } } |
Diese dynamische Anpassung der CSS Dateien ist möglich, da die Intermediate-Dateinamen jeweils den Hash der Datei, der Konfiguration etc. im Namen enthalten. Die Extension kann auch CSS Dateien ins Backend einbinden und dieses somit einfach umfärben. Ein Beispiel dafür gibt es auf YouTube im Video DynCSS Backenddemo.
Über die Extension ist es auch möglich Grafiken in den dynamisch erzeugten CSS Dateien dynamisch mit TYPOScript zu erzeugen.
Alle Quellen findest du auf GitHub:
- https://github.com/kaystrobach/TYPO3.dyncss
- https://github.com/kaystrobach/TYPO3.dyncss_phpsass
- https://github.com/kaystrobach/TYPO3.dyncss_turbine
- https://github.com/kaystrobach/TYPO3.dyncss_scss
- https://github.com/kaystrobach/TYPO3.dyncss_less
- https://github.com/kaystrobach/TYPO3.dyncss_test (In der Extension dyncss_test finden sich entsprechende Code Beispiele)
Viel Spaß beim Testen, ich freue mich auf euer Feedback