Extend T3editor

Custom modes (used for syntax highlighting) and addons can be registered.

CodeMirror delivers a lot more modes and addons than registered in T3editor by default.

More supported addons and modes are available at:

Prerequisites

To do this, extensions may have these two files to feed T3editor:

  • Configuration/Backend/T3editor/Addons.php

  • Configuration/Backend/T3editor/Modes.php

Both files return an array, as known as in TCA and Backend Routes, for example.

Register an addon

To register an addon, the following code may be used:

EXT:myext/Configuration/Backend/T3editor/Addons.php
<?php

return [
    'my/addon' => [
        'module' => JavaScriptModuleInstruction::create('@codemirror/addon', 'addon')->invoke()
        'cssFiles' => [
            'EXT:my_extension/Resources/Public/Css/MyAddon.css',
        ],
        'options' [
            'foobar' => 'baz',
        ],
        'modes' => ['htmlmixed', 'xml'],
    ],
];
<identifier>
Type

string

Required

true

Represents the unique identifier of the module (my/addon in this example).

module
Type

string

Required

true

Holds the JavaScriptModuleInstruction of the CodeMirror module.

cssFiles
Type

array

Holds all CSS files that must be loaded for the module.

options
Type

array

Options that are used by the addon.

modes
Type

array

If set the addon is only loaded if any of the modes supplied here is used.

Register a mode

To register a mode, the following code may be used:

EXT:myext/Configuration/Backend/T3editor/Modes.php
<?php

return [
    'css' => [
        'module' => 'cm/mode/css/css',
        'extensions' => ['css'],
    ],
];
<identifier>
Type

string

Required

true

Represents the unique identifier and format code of the mode (css in this example). The format code is used in TCA to define the CodeMirror mode to be used.

Example:

$GLOBALS['TCA']['tt_content']['types']['css']['columnsOverrides']['bodytext']['config']['format'] = 'css';
module
Type

string

Required

true

Holds the JavaScriptModuleInstruction of the CodeMirror module.

extensions
Type

array

Binds the mode to specific file extensions. This is important for using T3editor in the module Filelist.

default
Type

bool

If set, the mode is used as fallback if no sufficient mode is available. By factory default, the default mode is html.