DEPRECATION WARNING

This documentation is not using the current rendering mechanism and is probably outdated. The extension maintainer should switch to the new system. Details on how to use the rendering mechanism can be found here.

TYPO3-adx_less

Overview

This TYPO3 extension contains the LESS compiler http://lessphp.gpeasy.com/ which is compatible with Bootstrap 3.3.x.

  • Supports a hook for \TYPO3\CMS\Core\Page\PageRenderer which compiles LESS files for includeCSS
  • a function for USER-cObject
  • hooks for rtehtmlarea, tinymce_rte and tinymce4_rte
  • and a ViewHelper for Fluid.

To delete or regenerate compiled files proceed the "Flush general caches".

TypoScript

TypoScript properties

property | description | type | default -------- | ----------- | ---- | ------- variables | Array of variables which schould be included to the compiler. Set the variable name as key and without @. | array | NULL importDirectories | Comma seperated string and/or array of directories where should be look at @import. @see http://lessphp.gpeasy.com/ | array|string | NULL targetFilename | If set the compiler will save the file with this name. | string | NULL returnUri | If the keyword absolute is set, the compiler returns the absolute path to the file. If set to siteURL it returns the complete URL with TYPO3_SITE_URL. If TRUE the returned value is the relative path, else if FALSE it will return the parsed content. | boolean|string | NULL compress | Set to TRUE if compiled CSS should be compressed. | boolean | TRUE relativeUrls | Whether to adjust URL's to be relative. | boolean | TRUE strictUnits | Whether units need to evaluate correctly. | boolean | FALSE strictMath | Whether math has to be within parenthesis. | boolean | FALSE

Configuration

plugin.tx_adxless {

    variables {
        nice-blue = #5B83AD
        light-blue = @nice-blue + #111
    }

    # Comma seperated string or array with path => directory.
    # @see http://lessphp.gpeasy.com/
    importDirectories = 
}

Important! Property lessphp has been removed since v1.1.1. Set plugin.tx_adxless < plugin.tx_adxless.lessphp in the TypoScript for backwards compatibility.

USER-cObject

page.headerData.1367742474 = COA
page.headerData.1367742474 {

    # Set the USER content object where you want. The function includeCss will generate the CSS file and append it with the PageRenderer.
    10 = USER
    10.userFunc = AdGrafik\AdxLess\Utility\LessUtility->includeCss
    10.compilerSettings =< plugin.tx_adxless
    10.includeCssSettings {
        media = print
    }
    10.file = EXT:adx_less/Resources/Private/LESS/Example/Styles.less
    10.data (
body {
  border: 1px solid @nice-blue;
}
)
}

ViewHelper

Returns parsed LESS as CSS.

{namespace less=AdGrafik\AdxLess\ViewHelpers}
<less:compile data="[string]" variables="[array]" />
<less:compileAndInclude data="[string]" variables="[array]" />

ViewHelper properties

for less:compile

property | description | type | default -------- | ----------- | ---- | ------- data | LESS data or path and filename to the LESS file. | string | NULL variables | Array of variables which schould be included to the compiler. Set the variable name as key and without @. | array | NULL importDirectories | Comma seperated string and/or array of directories where should be look at @import. | array|string | NULL targetFilename | If set the compiler will save the file with this name. | string | NULL returnUri | If the keyword absolute is set, the compiler returns the absolute path to the file. If set to siteURL it returns the complete URL with TYPO3_SITE_URL. If TRUE the returned value is the relative path, else if FALSE it will return the parsed content. | boolean|string | NULL compress | Set to TRUE if compiled CSS should be compressed. | boolean | TRUE relativeUrls | Whether to adjust URL's to be relative. | boolean | TRUE strictUnits | Whether units need to evaluate correctly. | boolean | FALSE strictMath | Whether math has to be within parenthesis. | boolean | FALSE

additinally for less:compileAndInclude

property | description | type | default -------- | ----------- | ---- | ------- includeCssSettings | Same as TYPO3 property page.includeCss but without stdWrap. | array | NULL

Hooks

PageRenderer

page.includeCSS.styles = path/to/my/style-file.less

tinymce_rte

RTE.default.init.content_css = path/to/my/style-file.less

or append multiply files

RTE.default.init.content_css = path/to/my/style-file-1.less,path/to/my/style-file-2.less,path/to/my/style-file-3.less

tinymce4_rte

RTE.default.contentCSS = path/to/my/style-file.less

or append multiply files by comma seperated string

RTE.default.contentCSS = path/to/my/style-file-1.less,path/to/my/style-file-2.less,path/to/my/style-file-3.less

or append multiply files by key

RTE.default.contentCSS {
    file1 = path/to/my/style-file-1.less
    file2 = path/to/my/style-file-2.less
    file3 = path/to/my/style-file-3.less
}

rtehtmlarea

RTE.default.contentCSS = path/to/my/style-file.less

Using in extensions

// Create object
$less = GeneralUtility::makeInstance('AdGrafik\\AdxLess\\Less');
// Fetch extension configuration. Allowed parameters are cObject or PID.
$configuration = AdGrafik\AdxLess\Utility\LessUtility::getConfiguration($GLOBALS['TSFE']->cObj);
// Compile the LESS file. Will return the filepath of the parsed LESS file.
$pathAndFilename = 'path/to/my/style-file.less';
$compiledPathAndFilename = $less->compile($pathAndFilename, $configuration);