---
title: "Record types"
manual: "TCA Reference"
version: "main"
permalink: "https://docs.typo3.org/permalink/t3tca:types-introduction@main"
source: "Types/Index.rst"
modified: "2026-09-17T12:35:22+00:00"
---

# Record types

> [!NOTE]
> **See also**
>
> [Field types (config > type)](https://docs.typo3.org/permalink/t3tca:columns-types@main)
> are a different concept to record types.

A `types` section is mandatory in all table definitions.

The `types` section is an array of types `$GLOBALS['TCA'][$table]['types']` each
containing a `showitem` key which determines which fields will be displayed in
the backend form for the record. Most TCA tables will only contain one type.

However, it is possible to have many types in the same table with different fields
being displayed depending on the type. Then a new database field needs to be created
to save the type with the data. This field is set in
[$GLOBALS\['TCA'\]\[$table\]\['ctrl'\]\['type'\]](https://docs.typo3.org/permalink/t3tca:confval-ctrl-type@main).

Defining multiple types in one table is similar to
[Single Table Inheritance](https://en.wikipedia.org/wiki/Single_Table_Inheritance)
in Object-orientated programming.

**Table of Contents**

-   [A basic table without distinct types](https://docs.typo3.org/permalink/t3tca:a-basic-table-without-distinct-types@main)
-   [Supporting multiple record types in the same table](https://docs.typo3.org/permalink/t3tca:supporting-multiple-record-types-in-the-same-table@main)
-   [Properties of types section of TCA](https://docs.typo3.org/permalink/t3tca:properties-of-types-section-of-tca@main)
-   [Extended examples for using the types section of TCA](https://docs.typo3.org/permalink/t3tca:extended-examples-for-using-the-types-section-of-tca@main)

**Subpages**

-   [tt_content system fields](https://docs.typo3.org/permalink/t3tca:types-content@main)

> [!NOTE]
> **Changed in version 13.3**
>
> Creating content elements has been simplified by removing the need to
> define the system fields for each element again and again. This shrinks
> down a content element's [showitem](https://docs.typo3.org/permalink/t3tca:confval-types-showitem@main) to just the element
> specific fields. See also [Automatically added system fields to content types (tt_content)](https://docs.typo3.org/permalink/t3tca:types-content@main).

## A basic table without distinct types

A table record supporting only one type defines
which fields should be displayed in the backend form for the default type.

As an example, a comment on a blog post can be stored in a table as follows:

**EXT:blog_example/Configuration/TCA/tx_blogexample_comment.php**

```php
<?php

return [
  'ctrl' => [
    'title' => 'Comment',
    // ...
  ],
  'types' => [
    '0' => [
      'showitem' => 'hidden, name, email, content, date',
    ],
  ],
  'columns' => [
    // ...
  ],
];

```

The `types` section is mandatory.

## Supporting multiple record types in the same table

If a table supports multiple record types, the type of the record must be
saved in a dedicated database field, commonly named `record_type` or just `type`.
Usually a select field is used for that purpose.

The name of this field is registered in the `ctrl` section via property
[type](https://docs.typo3.org/permalink/t3tca:confval-ctrl-type@main).

As an example, a blog post might have several types where the fields
displayed in the backend differ:

**EXT:blog_example/Configuration/TCA/tx_blogexample_post.php**

```php
<?php

return [
  'ctrl' => [
    'title' => 'LLL:blog_example.db:tx_blogexample_domain_model_post',
    'label' => 'title',
    'type' => 'record_type',
    'typeicon_classes' => [
      '0' => 'tx-blog-post',
      'link' => 'tx-blog-post-link',
      'special' => 'tx-blog-post-special',
    ],
    // ...
  ],
  'types' => [
    '0' => [
      'showitem' => 'blog, title, date, author, content, comments, ',
    ],
    'link' => [
      'title' =>  'LLL:blog_example.db:link.title',
      'showitem' => ' blog, title, date, author, link, ',
    ],
    'special' => [
      'title' =>  'LLL:blog_example.db:special.title',
      'showitem' => 'blog, title, date, author, content, tags, comments, ',
    ],
  ],
  'columns' => [
    'record_type' => [
      'label' => 'LLL:blog_example.labels:post_types',
      'config' => [
        'type' => 'select',
        'renderType' => 'selectSingle',
        'items' => [
          [
            'label' => 'Blog Post',
            'value' => '0',
          ],
          [
            'label' => 'Link to External Blog Post',
            'value' => 'link',
          ],
          [
            'label' => 'Special Blog Post',
            'value' => 'special',
          ],
        ],
        'default' => '0',
      ],
    ],
    // ...
  ],
];

```

For each record type you can define additional
[creationOptions](https://docs.typo3.org/permalink/t3tca:confval-types-creationoptions@main)
and change field display definitions via
[columnsOverrides](https://docs.typo3.org/permalink/t3tca:confval-types-columnsoverrides@main).

It is also possible to define [previewRenderers](https://docs.typo3.org/permalink/t3tca:confval-types-previewrenderer@main).

You can also define icons for each type using the property
[ctrl -> typeicon_classes](https://docs.typo3.org/permalink/t3tca:confval-ctrl-typeicon-classes@main).

## Properties of `types` section of TCA

-   **allowedRecordTypes**

    -   *Type:* array of table names or `['*']`
    -   *Path:* $GLOBALS\['TCA'\]\[$table\]\['types'\]\[$type\]\['allowedRecordTypes'\]
    -   *Default:* `['pages', 'sys_category', 'sys_file_reference', 'sys_file_collection']`

    > [!NOTE]
    > **New in version 14.2**
    >
    > This property replaces the now deprecated method
    > `PageDoktypeRegistry->addAllowedRecordTypes()`. See also
    > [Deprecation: #108557 - TCA option allowedRecordTypes for Page Types](https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/14.2/Deprecation-108557-TCAOptionAllowedRecordTypesForPageTypes.html#deprecation-108557-1768610680)

    > [!NOTE]
    > This property is only interpreted in the table `pages`.

    The array can contain a list of table names or a single entry with an asterisk
    `*` to allow all types within a page type.

    See [TYPO3 Explained: Create new Page Type](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/PageTypes/CreateNewPageType.html#page-types-example)
    for a complete example.

-   **columnsOverrides**

    -   *Type:* array (columns fields overrides)
    -   *Path:* $GLOBALS\['TCA'\]\[$table\]\['types'\]\[$type\]
    -   *Scope:* Display
    -   *Examples:* [Examples for columnsOverrides](https://docs.typo3.org/permalink/t3tca:types-examples-columnsoverrides@main)

    Changed or added \['columns'\] field display definitions.

    This allows different field column definitions to be applied when a record of this type is edited. Currently,
    only the display of form fields is affected, not data handling.

    A typical property that can be changed is `renderType`.

    The core uses this property to override the "bodytext" field config of table "tt_content". If a record
    of type "text" is edited, it adds "enableRichtext = 1" to trigger an RTE to the default "bodytext" configuration,
    and if a type "table" is edited, it adds "renderType = textTable" and "wrap = off" to "bodytext".

    The FormEngine basically merges "columnsOverrides" over the default "columns" field after the record type
    has been determined.

    > [!WARNING]
    > **Attention**
    >
    > It is not possible to override any properties in "Proc." scope: The DataHandler does not take "columnsOverrides"
    > into account. Only pure "Display" related properties can be overridden. This especially means that
    > columns config 'type' must **not** be set to a different value.

-   **creationOptions**

    -   *Type:* list of options
    -   *Path:* $GLOBALS\['TCA'\]\[$table\]\['types'\]\[$type\]\['creationOptions'\]

    -   **defaultValues**

        -   *Type:* array
        -   *Path:* $GLOBALS\['TCA'\]\[$table\]\['types'\]\[$type\]\['creationOptions'\]\['defaultValues'\]
        -   *Examples:* [Example: Create the blog plugin at once](https://docs.typo3.org/permalink/t3tca:types-example-creation-option@main)

        Default values inserted into the fields of the `tt_content` record on
        creation via the "New Content Element" wizard

        Can be overridden with page TSconfig option
        [tt_content_defValues](https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/PageTsconfig/Mod/Wizards.html#confval-mod-wizards-newcontentelement-wizarditems-group-elements-name-tt-content-defvalues).

    -   **enableDirectRecordTypeCreation**

        -   *Type:* bool
        -   *Default:* true
        -   *Path:* $GLOBALS\['TCA'\]\[$table\]\['types'\]\[$type\]\['creationOptions'\]\['enableDirectRecordTypeCreation'\]

        > [!NOTE]
        > **New in version 14.0**

        Record types registered via TCA are automatically displayed in the
        "Create new record" component in the backend module
        **Content > Records**.

        A record type can be removed from that component via:

        **EXT:my_extension/Configuration/TCA/Overrides/my_table.php**

        ```php
        $GLOBALS['TCA']['my_table']['types']['my_type']['creationOptions']['enableDirectRecordTypeCreation'] = false;
        ```

        Event `\TYPO3\CMS\Backend\Controller\Event\ModifyNewRecordCreationLinksEvent`
        can be used for more sophisticated modification of the dialogue.

    -   **saveAndClose**

        -   *Type:* bool
        -   *Default:* false
        -   *Path:* $GLOBALS\['TCA'\]\[$table\]\['types'\]\[$type\]\['creationOptions'\]\['saveAndClose'\]
        -   *Examples:* [Example: Create the blog plugin at once](https://docs.typo3.org/permalink/t3tca:types-example-creation-option@main)

        If true, clicking on the new element wizard will take the user directly
        to the **Content > Layout** module, rather than showing the
        edit form from the form engine.

        Can be overridden with page TSconfig option
        [saveAndClose](https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/PageTsconfig/Mod/Wizards.html#confval-mod-wizards-newcontentelement-wizarditems-group-elements-name-saveandclose).

    -   **title**

        -   *Type:* string | language reference
        -   *Path:* $GLOBALS\['TCA'\]\[$table\]\['types'\]\[$type\]\['creationOptions'\]\['title'\]

        > [!NOTE]
        > **New in version 14.0**

        With this option it is possible to set an
        individual title for the record type, to be used as label on the
        creation link in the "Create new record" component.

        **EXT:my_extension/Configuration/TCA/Overrides/my_table.php**

        ```php
        $GLOBALS['TCA']['my_table']['types']['my_type']['creationOptions']['title']
            = 'my_extension.db.myType:title';
        ```

-   **label**

    -   *Type:* string, name of a field
    -   *Path:* $GLOBALS\['TCA'\]\[$table\]\['types'\]\[$recordType\]\['label'\]
    -   *Scope:* Display

    > [!NOTE]
    > **New in version 14.2**
    >
    > See [Feature: #108581 - Record type specific label configuration](https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/14.2/Feature-108581-RecordTypeSpecificLabelConfiguration.html#feature-108581-1735479000).

    Defines the primary field used as a type-specific label for a record type,
    overriding the label defined in
    [$GLOBALS\['TCA'\]\[$table\]\['ctrl'\]\['label'\]](https://docs.typo3.org/permalink/t3tca:confval-ctrl-label@main).

    All places in TYPO3 that use `\TYPO3\CMS\Backend\Utility\BackendUtility::getRecordTitle()`
    automatically benefit from this feature without any code changes. This includes
    record lists, page trees, history views, workspaces, and similar backend modules.

    This is especially useful for tables like `tt_content` where different content
    element types may benefit from showing different fields. For example, an "Image"
    content element could display the image caption, while a "Text" element shows the
    header field.

    **EXT:my_extension/Configuration/TCA/tx_my_table.php**

    ```php
    return [
        'ctrl' => [
            'label' => 'header',
            'type' => 'record_type',
            // ... other ctrl configuration
        ],
        'types' => [
            'article' => [
                'label_alt' => 'teaser',
            ],
            'event' => [
                'label_alt' => 'event_date,location',
                'label_alt_force' => true,
            ],
        ],
        // ... columns configuration
    ];
    ```

    In this example:

    -   All types use `header` as the primary label field (from `ctrl['label']`).
    -   The **article** type displays the `teaser` field if `header` is empty.
    -   The **event** type displays `header` together with `event_date` and `location`
        (since `label_alt_force` is enabled).

-   **label_alt**

    -   *Type:* string, comma separated list of fields
    -   *Path:* $GLOBALS\['TCA'\]\[$table\]\['types'\]\[$recordType\]\['label_alt'\]
    -   *Scope:* Display

    > [!NOTE]
    > **New in version 14.2**
    >
    > See [Feature: #108581 - Record type specific label configuration](https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/14.2/Feature-108581-RecordTypeSpecificLabelConfiguration.html#feature-108581-1735479000).

    Alternative field(s) used when label is empty (or as additional fields)

-   **label_alt_force**

    -   *Type:* bool
    -   *Default:* false
    -   *Path:* $GLOBALS\['TCA'\]\[$table\]\['types'\]\[$recordType\]\['label_alt_force'\]
    -   *Scope:* Display

    > [!NOTE]
    > **New in version 14.2**
    >
    > See [Feature: #108581 - Record type specific label configuration](https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/14.2/Feature-108581-RecordTypeSpecificLabelConfiguration.html#feature-108581-1735479000).

    Force display of alternative fields alongside the primary label

-   **previewRenderer**

    -   *Type:* string
    -   *Path:* $GLOBALS\['TCA'\]\[$table\]\['types'\]\[$type\]\['previewRenderer'\]
    -   *Scope:* Display
    -   *Examples:* `types-example-previewRenderer`

    To configure a preview renderer for the whole table see
    [previewRenderer](https://docs.typo3.org/permalink/t3tca:confval-ctrl-previewrenderer@main).

    Configures a backend preview for a content element.

    Have also a look at [Configure custom backend preview for content element](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/ContentElements/CustomBackendPreview.html#ConfigureCE-Preview) for more details.

    Use [property previewRenderer of section ctrl](https://docs.typo3.org/permalink/t3tca:confval-ctrl-previewrenderer@main)
    to configure the preview globally for the whole table.

-   **showitem**

    -   *Type:* string (list of field configuration sets)
    -   *Path:* $GLOBALS\['TCA'\]\[$table\]\['types'\]\[$type\]\['showitem'\]
    -   *Required:* true
    -   *Examples:* [Display all fields on one page of the form](https://docs.typo3.org/permalink/t3tca:types-example-showitem@main)

    Configuration of the displayed order of fields in FormEngine and their tab alignment.

    The whole string is a comma `,` separated list of tokens. Each token can have keywords separated by
    semicolon `;`.

    Each comma separated token is one of the following:

    -   **`fieldName;fieldLabel`**

        Name of a field to show. Optionally an alternative label (plain text label or [label reference](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Localization/Labels/Index.html#label-reference)) to override
        the [default label from columns section](https://docs.typo3.org/permalink/t3tca:columns-properties-label@main).

    -   **`--palette--;paletteLabel;paletteName`**

        Name of a [palette](https://docs.typo3.org/permalink/t3tca:palettes@main) to show. The label (plain text label or [label reference](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Localization/Labels/Index.html#label-reference)) is optional. If set, it is
        shown above the single palette fields. The palette name is required and must reference a palette from
        the palette section.

        ```php
        --palette--;;caching // Show palette "caching" without additional label
        --palette--;Caching;caching // Show palette "caching" with label "Caching"
        ```

    -   **`--div--;tabLabel`**

        Put all fields after this token onto a new tab and name the tab as given in "tabLabel" (plain text label or [label reference](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Localization/Labels/Index.html#label-reference)).

    > [!NOTE]
    > It is good practice to add a comma in excess behind the very last field name
    > as shown in the examples above. The FormEngine code will ignore this, but it
    > helps developers to not forget about a comma when additional fields are
    > added, which can suppress an annoying "Why is my new field not
    > displayed?" bug hunt.

    Extensions can also modify `showitem` values by utilizing
    `ExtensionManagementUtility::addToAllTCAtypes()`.
    See [Customization examples](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/HowTo/ExtendingTca/Examples/Index.html#extending-examples) for details.

-   **title**

    -   *Type:* plain text label or [label reference](https://docs.typo3.org/permalink/t3coreapi:label-reference)
    -   *Path:* $GLOBALS\['TCA'\]\[$table\]\['types'\]\[$recordType\]\['title'\]
    -   *Scope:* Display

    > [!NOTE]
    > **New in version 14.0**
    >
    > It is now possible to define a type-specific `title` in the TCA
    > `types` section. See also
    > [Feature: #108027 - Type-specific title in TCA types section](https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/14.0/Feature-108027-Type-SpecificCtrlPropertiesInTCATypes.html#feature-108027-1762779249).

    The `title` in the TCA `types` section defines a type specific title that
    is displayed in the backend when creating or editing a record of that type.

    The value is also available in the **Schema API**
    (`\TYPO3\CMS\Core\Schema\TcaSchemaFactory`),
    making type-specific titles available when using `$schema->getTitle()`
    and in the **FormEngine**
    (`TcaTypesCtrlOverrides`
    data provider).

    **EXT:blog_example/Configuration/TCA/tx_blogexample_domain_model_post.php**

    ```
    return [
        'ctrl' => [
            'title' => 'LLL:blog_example.db:post.title',
            'type' => 'record_type',
            // ... other ctrl configuration
        ],
        'types' => [
            '0' => [
                'showitem' => 'blog, title, date, author, content, comments, ',
            ],
            'link' => [
                'title' =>  'LLL:blog_example.db:link.title',
                'showitem' => ' blog, title, date, author, link, ',
            ],
            'special' => [
                'title' =>  'LLL:blog_example.db:special.title',
                'showitem' => 'blog, title, date, author, content, tags, comments, ',
            ],
        ],
        // ... columns configuration
    ];
    ```

    It is possible to insert plain text values here, however it is recommended
    to keep all labels in a translation file and reference the label with the
    special syntax shown above.

    See also [TYPO3 Explained: Label references / LLL strings](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Localization/Labels/Index.html#label-reference)

-   **wizardSteps**

    -   *Type:* array
    -   *Path:* $GLOBALS\['TCA'\]\[$table\]\['types'\]\[$recordType\]\['wizardSteps'\]
    -   *Scope:* Table `tables` only

    > [!NOTE]
    > **New in version 14.2**
    >
    > It is possible to configure fields, steps (and their order)
    > in the page creation wizard using TCA. See
    > [Feature: #109271 - Add TCA configuration for page creation wizard steps](https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/14.2/Feature-109271-TCAConfigurationForDynamicWizardSteps.html#feature-109271-1742217000).

    Defines the steps shown in the page creation wizard for the `pages` table.

    Each step is identified by a unique key and contains a localized title and a
    list of fields to display in that step. The configured steps are sorted and
    may be positioned relative to other steps by using the `before` or `after`
    options.

    The configuration can be defined per page type, allowing different wizard
    steps and field assignments depending on the selected page type.

    Required fields that are not assigned to any configured wizard step are added
    automatically to a fallback step, which is appended at the end of the wizard.

    **EXT:my_extension/Configuration/TCA/Overrides/pages.php**

    ```php
    <?php

    $GLOBALS['TCA']['pages']['types']['123']['wizardSteps'] = [
      'setup' => [
        'title' => 'backend.wizards.page:step.setup',
        'fields' => ['title', 'slug', 'nav_title', 'hidden', 'nav_hide'],
      ],
      'special' => [
        'title' => 'backend.wizards.page:wizard.special_step',
        'fields' => ['my_custom_field'],
        'after' => ['setup'],
      ],
    ];

    ```

    For a complete example see [TYPO3 Explained, Create new page type](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/PageTypes/CreateNewPageType.html#page-types-example).

> [!NOTE]
> **Changed in version 13.0**
>
> The properties `bitmask_excludelist_bits` and `bitmask_excludelist_bits`
> have been removed, it is not considered anymore when rendering
> records in the backend record editing interface.
>
> Extensions still using this setting should switch to casual
> `$GLOBALS['TCA']['someTable']['ctrl']['type']` fields instead, which
> can be powered by columns based on string values.

## Extended examples for using the `types` section of TCA

-   [Display all fields on one page of the form](https://docs.typo3.org/permalink/t3tca:display-all-fields-on-one-page-of-the-form@main)
-   [Group fields using tabs and use palettes](https://docs.typo3.org/permalink/t3tca:group-fields-using-tabs-and-use-palettes@main)
-   [Examples for columnsOverrides in type section of TCA](https://docs.typo3.org/permalink/t3tca:examples-for-columnsoverrides-in-type-section-of-tca@main)
-   [Override default values by type](https://docs.typo3.org/permalink/t3tca:override-default-values-by-type@main)
-   [PreviewRenderer examples](https://docs.typo3.org/permalink/t3tca:previewrenderer-examples@main)
-   [Example: Create the blog plugin at once](https://docs.typo3.org/permalink/t3tca:example-create-the-blog-plugin-at-once@main)

### Display all fields on one page of the form

The table containing the blog comments does not contain many fields. So they can
all be displayed on one page of the backend form without using tabs:

**EXT:blog_example/Configuration/TCA/tx_blogexample_comment.php**

```php
<?php

return [
  'types' => [
    '0' => [
      'showitem' => 'hidden, name, email, content, date, ',
    ],
  ],
  // ...
];

```

### Group fields using tabs and use palettes

If a table has a larger number of fields, grouping them into tabs and palettes
can improves the backend user experience. Palettes have the additional value
that they can be reused across different record types.

**EXT:blog_example/Configuration/TCA/tx_blogexample_post.php**

```php
<?php

return [
  'types' => [
    '0' => [
      'showitem' => '
            record_type, blog, title, date, author, content,
            --div--;core.form.tabs:access,
                hidden,
                --palette--;;paletteStartStop,
                fe_group,
            --div--;core.form.tabs:language,
                 --palette--;;paletteLanguage,
            ',
    ],
  ],
  'palettes' => [
    'paletteStartStop' => [
      'showitem' => 'starttime, endtime',
    ],
    'paletteLanguage' => [
      'showitem' => 'sys_language_uid, l10n_parent',
    ],
  ],
];

```

The syntax for tabs is:

`--div--;<label>`

Where label can be plain text label or [label reference](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Localization/Labels/Index.html#label-reference) (preferred).

The syntax to insert a palette is:

`--palette--;<label>;<paletteName>`

The label can be omitted.

> [!NOTE]
> **See also**
>
> [Grouping fields (palettes)](https://docs.typo3.org/permalink/t3tca:palettes@main)

### Examples for columnsOverrides in type section of TCA

Demonstrates property: [columnsOverrides](https://docs.typo3.org/permalink/t3tca:confval-types-columnsoverrides@main).

For example the special blog post type might require the author to be set and
use a different render type and description for the content:

```php
<?php

return [
  'ctrl' => [
    'title' => 'LLL:blog_example.db:tx_blogexample_domain_model_post',
    // ...
  ],
  'types' => [
    'special' => [
      'columnsOverrides' => [
        'author' => [
          'config' => [
            'required' => true,
          ],
        ],
        'content' => [
          'description' => 'You can use Markdown syntax for the content. ',
          'config' => [
            'renderType' => 'codeEditor',
          ],
        ],
      ],
      'showitem' => 'blog, title, date, author, content, tags, comments, ',
    ],
    // ...
  ],
  // ...
];

```

While the field type `type` cannot be changed in the `columnsOverrides` the
render type `renderType` can be changed.

### Override default values by type

A blog post of type link should have a different default value for the author
field then other blog post types:

**EXT:blog_example/Configuration/TCA/tx_blogexample_post.php**

```php
<?php

return [
  'ctrl' => [
    'title' => 'LLL:blog_example.db:tx_blogexample_domain_model_post',
    // ...
  ],
  'types' => [
    'link' => [
      'showitem' => 'blog, title, date, author, link, ',
      'creationOptions' => [
        'defaultValues' => [
          'author' => 'External Author',
        ],
      ],
    ],
    // ...
  ],
  // ...
];

```

### PreviewRenderer examples

Demonstrates property: [previewRenderer](https://docs.typo3.org/permalink/t3tca:confval-types-previewrenderer@main).

This specifies the preview renderer only for records with the c `blogexample_list`
as determined by the field `Ctype` of the table `tt_content`.

This could be used to preview the blog plugin in the **Content > Layout** module.

```php
$GLOBALS['TCA']['tt_content']['types']['blogexample_list']['previewRenderer']
    = \MyVendor\MyExtension\Preview\PreviewRenderer::class;
```

### Example: Create the blog plugin at once

Demonstrates property: [saveAndClose](https://docs.typo3.org/permalink/t3tca:confval-types-creationoptions-saveandclose@main).

When editors create a new blog plugin in the plugin is automatically saved and
the user returned to the **Content > Layout** module:

**EXT:blog_example/Configuration/TCA/Overrides/tt_content_blogexample_list.php**

```php
<?php

$GLOBALS['TCA']['tt_content']['types']['blogexample_list']['creationOptions']['saveAndClose'] = true;

```

> [!NOTE]
> This property only takes effect in the table `tt_content`.
