TYPO3 10.4:如何向内容元素的外观选项卡添加另一个下拉字段?

TYPO3 10.4: How can you add another dropdown field to the appearance tab of an content element?

我想在外观选项卡中添加更多下拉字段以编辑内容元素。

我怎样才能做到这一点?

我尝试为 pageT 添加更多布局,但这不起作用。在互联网上也找不到更多相关信息。

您不能通过后端执行此操作。您将需要扩展 TCA(例如,在您的网站包扩展中)。

在您的分机中:

  1. ext_tables.sql
  2. 中添加字段
  3. Configuration/TCA/Overrides/tt_content.php 中扩展 TCA:
  • 向列添加新字段
  • 将新字段添加到可见字段
  • 将新字段添加到适当的 palette

提示:您可以在 TYPO3 后端 Configuration | Globals['TCA']

中查看 tt_content 的活动 TCA 配置

如果您想将新字段放在现有字段之后,例如space_before_class,检查它在哪个调色板中 ('frames') 并将其放入其中。

示例:

ext_tables.sql:

CREATE TABLE tt_content(
  my_new_field TINYINT(1) UNSIGNED DEFAULT '0' NOT NULL
);

Configuration/TCA/Overrides/tt_content.php

$fields = [
    // new field
    'my_new_field' => [
        // title of the field 
        // alternatively, just use a string, but putting the string in
        // language file eases translations 
        'label' => 'LLL:EXT:myextension/Resources/Private/Language/locallang.xlf:tt_content.my_new_field.title',
        'config' => [
            // type: select 
            'type' => 'select',
            'renderType' => 'selectSingle',  
            'default' => 0,
            'items' => [
                [
                    // again, better to use language label LLL here 
                    'description',                         
                    // value
                    0
                ],
                [
                    // another option
                    'description 2',
                    // value
                    1
                ],
            ],
        ],
    ],
    // ...
];


// Add new fields to table:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tt_content', $fields);
     
// Add new field to palette 'frames' 
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette(
    'tt_content',
    'frames',
    'my_new_field',
    'before:frame_class'
);

资源:

如果您可以接受给定字段的更多选项,您可以在 BE 中完成它而无需编程/扩展 TCA(Sybille 的回答)。

使用一些 page/user TSConfig 可以扩展现有字段的给定 select 选项列表,例如:

TCEFORM.tt_content.layout.addItems {
    20 = additional layout 1|nyt layout 1|neues Layout 1|...
    25 = additional layout 2|nyt layout 2|neues Layout 2|...
}
TCEFORM.tt_content.frame_class.addItems {
    50 = frame-class-50
    55 = frame-class-55
}

当然这需要在 CE 渲染中进行处理。
根据 TYPO3 版本和活动渲染,有不同的地方来处理这个问题。
如果没有 FLUID 渲染,它需要在打字稿中进行一些编辑,使用 FLUID,您需要覆盖处理字段(此处:layoutframe_class)的适当文件(layout/template/partial)。