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_scss

Overview

This TYPO3 extension contains the SCSS compiler https://github.com/leafo/scssphp which is compatible with Bootstrap 4.x.

  • Supports a hook for \TYPO3\CMS\Core\Page\PageRenderer which compiles SCSS 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 importPaths | 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 formatter | Set the formatter. Options: Nested, Compressed, Compact, Crunched, Debug, Expanded, OutputBlock | string | Nested numberPrecision | Set the numberPrecision | integer | 5 lineNumberStyle | Set the lineNumberStyle. Options: lineComments, debugInfo | string | NULL

Configuration

plugin.tx_adxscss {

    # If set the compiler will save the file with this name.
    targetFilename = 

    # Comma seperated string or array with x = directory.
    importPaths = 

    # Set the formatter. Options: Nested (default), Compressed, Compact, Crunched, Debug, Expanded, OutputBlock
    formatter = 

    # Set the numberPrecision (default: 5)
    numberPrecision = 5

    # Set the lineNumberStyle Options: 0 (default), lineComments, debugInfo
    lineNumberStyle = 0

    variables {
        # Place your own variables here.
    }
}

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\AdxScss\Utility\ScssUtility->includeCss
    10.compilerSettings =< plugin.tx_adxscss
    10.includeCssSettings {
        media = print
    }
    10.file = path/to/my/style-file.scss
    10.data (
$nice-blue: blue;
body {
  border: 1px solid $nice-blue;
}
)
}

ViewHelper

Returns parsed SCSS as CSS.

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

ViewHelper properties

for scss:compile

property | description | type | default -------- | ----------- | ---- | ------- data | SCSS data or path and filename to the SCSS file. | string | NULL variables | Array of variables which schould be included to the compiler. Set the variable name as key and without @. | array | NULL importPaths | 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 formatter | Set the formatter. Options: Nested, Compressed, Compact, Crunched, Debug, Expanded, OutputBlock | string | Nested numberPrecision | Set the numberPrecision | integer | 5 lineNumberStyle | Set the lineNumberStyle. Options: lineComments, debugInfo | string | NULL

additinally for scss:compileAndInclude

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

Examples

XML/HTML:

<scss:compile data="div { color: $color; }" variables="{ color: 'red' }" />

Output:

div { color: red; }

XML/HTML:

<scss:compileAndInclude variables="{ color: 'red' }" includeCssOptions="{ media: 'print' }">
    div {
        color: $color;
    }
</scss:compile>

Output:

<link rel="stylesheet" type="text/css" href="typo3temp/tx_adxscss/compliled.06038bd94eba2da1b219679e2fb8c822-58c67ef417c6c12e5afbe77144770bc9.scss.css" media="print">

Include the css file into the page via PageRenderer.

Hooks

PageRenderer

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

tinymce_rte

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

or append multiply files

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

tinymce4_rte

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

or append multiply files by comma seperated string

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

or append multiply files by key

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

rtehtmlarea

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

Using in extensions

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