RTE

The RTE prefix key is used for configuration of the Rich Text Editor. Please refer to the RTE chapter in Core API document for more general information on RTE configuration and data processing.

The order in which the configuration for the RTE is loaded is (the first one which is set will be used, see example below):

  1. preset defined for a specific field via page TSconfig
  2. richtextConfiguration defined for a specific field via TCA
  3. general preset defined via page TSconfig (RTE.default.preset)
  4. default (the preset "default", e.g. as defined by EXT:rte_ckeditor or overridden in ext_localconf.php)

The full property path building is a bit more complex than for other property segments. The goal is that global options can be set that can also be overridden in more specific situations:

Configure all RTE for all tables, fields and types:
RTE.default
Configure RTE for a specific field in a table
RTE.config.[tableName].[fieldName]
Configure RTE for a specific field in a table for a specific record type
RTE.config.[tableName].[fieldName].types.[type]

Configuring RTE via page TSconfig is general and not specific to a particular rich-text editor. However, TYPO3 comes with EXT:rte_ckeditor, so this one will usually be used. This page covers only the general configuration, for more information about configuring EXT:rte_ckeditor, see the rte_ckeditor configuration.

Examples

Example: Disable RTE

EXT:site_package/Configuration/page.tsconfig
# Disable all RTEs
RTE.default.disabled = 1
Copied!
EXT:site_package/Configuration/page.tsconfig
# Disable all RTEs
RTE.default.disabled = 1
# Enable RTE for the tt_content bodytext field only
RTE.config.tt_content.bodytext.disabled = 0
Copied!
EXT:site_package/Configuration/page.tsconfig
# Disable all RTEs
RTE.default.disabled = 1
# Enable RTE for the tt_content bodytext field only
RTE.config.tt_content.bodytext.disabled = 0
# But disable RTE for tt_content bodytext again if the record type is "text"
RTE.config.tt_content.bodytext.types.text.disabled = 1
Copied!

Example: Override preset

Refer to the description of the order above for details of which setting has priority over which.

Summary:

  • Setting the preset via page TSconfig for a specific field overrides all, else
  • TCA richtextConfiguration (for a specific field) overrides the page TSconfig default preset (RTE.default.preset)
EXT:site_package/Configuration/page.tsconfig
# set a default preset to use as fallback
RTE.default.preset = custom_preset_default

# Override preset for field "description" in table "tt_address"
RTE.config.tt_address.description.preset = custom_preset_fancy
Copied!

Properties

disabled

disabled

disabled
Type
boolean

If set, the editor is disabled. This option is evaluated in \TYPO3\CMS\Backend\Form\FormEngine where it determines whether the RTE is rendered or not. Note that a backend user can also ultimately disable RTE's in his user settings.

buttons

config.contentsLanguageDirection

config.contentsLanguageDirection

config.contentsLanguageDirection
Type
string

The configuration contentsLangDirection of the ckeditor is used to define the direction of the content. It is filled by the direction defined in the site language of the current element.

As fallback the following page TsConfig configuration can be used:

EXT:my_sitepackage/Configuration/page.tsconfig
# always use right to left
RTE.config.contentsLanguageDirection = rtl

# except for the following language:
[siteLanguage("locale") == "en_US"]
    RTE.config.contentsLanguageDirection = ltr
[END]
Copied!

proc

The proc section allows customization of the server processing of the content, see the transformation section of the RTE chapter in the core API document for more general information on server processing.

The proc properties are in \TYPO3\CMS\Core\Html\RteHtmlParser and are universal for all RTEs. The main objective of these options is to allow for minor configuration of the transformations. For instance you may disable the mapping between <b>-<strong> and <i>-<em> tags which is done by the ts_transform transformation.

Notice how many properties relate to specific transformations only! Also notice that the meta-transformations ts_css imply other transformations.

This means that options limited to ts_transform will also work for ts_css of course.

allowedClasses

proc.allowedClasses

proc.allowedClasses
Type
string with comma separated values

Applies for ts_transform and css_transform only.

Direction: From RTE to database, saving a record.

Allowed general class names when content is stored in database. Could be a list matching the number of defined classes you have. Class names are case insensitive.

This might be a really good idea to do, because when pasting in content from MS word for instance there are a lot of <SPAN> and <P> tags which may have class names in. So by setting a list of allowed classes, such foreign class names are removed.

If a class name is not found in this list, the default is to remove the class.

allowTags

proc.allowTags

proc.allowTags
Type
string with comma separated values

Applies for ts_transform and css_transform only.

Tags to allow. Notice, this list is added to the default list, which you see here:

b,i,u,a,img,br,div,center,pre,figure,figcaption,font,hr,sub,sup,p,strong,em,li,ul,ol,blockquote,strike,span,abbr,acronym,dfn

allowTagsOutside

proc.allowTagsOutside

proc.allowTagsOutside
Type
string with comma separated values
Default
address, article, aside, blockquote, footer, header, hr, nav, section, div

Applies for ts_transform and css_transform only.

Enter tags which are allowed outside of <P> and <DIV> sections when converted back to database.

Example: Allow only hr tags outside of p and div
EXT:site_package/Configuration/page.tsconfig
# Allow only hr tags outside of p and div
RTE.default.proc.allowTagsOutside = hr
Copied!

blockElementList

proc.blockElementList

proc.blockElementList
Type
string with comma separated values

Comma-separated list of uppercase tags (e.g. P,HR) that overrides the list of HTML elements that will be treated as block elements by the RTE transformations.

denyTags

proc.denyTags

proc.denyTags
Type
string with comma separated values

Applies for ts_transform and css_transform only.

Tags from above list to disallow.

entryHTMLparser_db

proc.entryHTMLparser_db

proc.entryHTMLparser_db
Type
boolean / HTMLparser

Applies to all kinds of processing.

Allows to enable / disable the HTMLparser before the content is processed with the predefined processors (e.g. ts_images or ts_transform).

entryHTMLparser_rte

proc.entryHTMLparser_rte

proc.entryHTMLparser_rte
Type
boolean / HTMLparser

Applies to all kinds of processing.

Allows to enable / disable the HTMLparser before the content is processed with the predefined processors (e.g. ts_images or ts_transform).

exitHTMLparser_db

proc.exitHTMLparser_db

proc.exitHTMLparser_db
Type
boolean / HTMLparser

Applies to all kinds of processing.

Allows to enable / disable the HTMLparser after the content is processed with the predefined processors (e.g. ts_images or ts_transform).

exitHTMLparser_rte

proc.exitHTMLparser_rte

proc.exitHTMLparser_rte
Type
boolean / HTMLparser

Applies to all kinds of processing.

Allows to enable / disable the HTMLparser after the content is processed with the predefined processors (e.g. ts_images or ts_transform).

HTMLparser_db

proc.HTMLparser_db

proc.HTMLparser_db
Type
HTMLparser

Applies for ts_transform and css_transform only.

These are additional options to the HTML parser calls which strips of tags when the content is prepared from the RTE to the database, saving a record. It is possible to configure additional rules like which other tags to preserve, which attributes to preserve, which values are allowed as attributes of a certain tag etc.

For the detailed list of properties, see the section of the TypoScript reference.

Sanitization

New in version 9.5.29/10.4.19

An HTML sanitizer is available to sanitize and remove XSS from markup. It strips tags, attributes and values that are not explicitly allowed.

Sanitizatin for persisting data is disabled by default and can be enabled globally by using the corresponding feature flag in typo3conf/LocalConfiguration.php or typo3conf/AdditionalConfiguration.php:

$GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['security.backend.htmlSanitizeRte'] = true;
Copied!

It can then be disabled per use case with a custom processing instruction:

EXT:site_package/Configuration/Processing.yaml
processing:
  allowTags:
    # ...
  HTMLparser_db:
    # ...
    # disable individually per use case
    htmlSanitize: false

    # This is the default configuration,
    # the feature flag has to be enabled
    htmlSanitize:
      # use default builder as configured in
      # $GLOBALS['TYPO3_CONF_VARS']['SYS']['htmlSanitizer']
      build: default
Copied!

HTMLparser_rte

proc.HTMLparser_rte

proc.HTMLparser_rte
Type
HTMLparser

Applies for ts_transform and css_transform only.

These are additional options to the HTML parser calls which strips of tags when the content is prepared from the database to the RTE rendering. It is possible to configure additional rules like which other tags to preserve, which attributes to preserve, which values are allowed as attributes of a certain tag etc.

For the detailed list of properties, see the section of the TypoScript reference.

overruleMode

proc.overruleMode

proc.overruleMode
Type
Comma list of RTE transformations

This can overrule the RTE transformation set from TCA. Notice, this is a comma list of transformation keys.