TYPO3:如何配置 $GLOBALS['TCA']['tt_content']['types']

TYPO3: How to configure $GLOBALS['TCA']['tt_content']['types']

我有一个带有内容元素的扩展。我想在内容元素向导中显示它。为此,我创建了 tt_content.php。其中的代码如下所示:

$GLOBALS['TCA']['tt_content']['types']['extensionkey_contentelementname'] = array(
    'types' => [
        '0' => [
            'showitem' => '
            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general, category, subject, message,
            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, personal
        ',
        ],
    ]
);

(我明明把extensionkey_contentelementname换成了真名)

这在尝试创建内容元素时抛出一个错误:

TCA table tt_content 中类型 extensionkey_contentelementname

中没有或无效的 showitem 定义

我做错了什么?

您添加的两个数组级别太多了。您已经在 $GLOBALS['TCA']['tt_content']['types'],因此不再需要 types0

https://docs.typo3.org/typo3cms/extensions/fluid_styled_content/7.6/AddingYourOwnContentElements/Index.html#configuration-tca-overrides-tt-content-php

在Configuration/TCA/Overrides/tt_content.php:

$GLOBALS['TCA']['tt_content']['types']['extensionkey_contentelementname'] = [
    'showitem' => '
            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general, category, subject, message,
            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, personal
        ',
];
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
    'tt_content',
    'CType',
     [
         'My content element',
         'extensionkey_contentelementname',
         'content-image',
     ],
     'textmedia',
     'after'
 );

那里有一个重复的 'types'。

在页面 TS 配置中使用它以将其包含在内容元素向导中。

$GLOBALS['TCA']['tt_content']['types']['extensionkey_contentelementname'] = [
    'showitem' => '
            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general, category, subject, message,
            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access, personal
        ',
];
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
    'tt_content',
    'CType',
     [
         'My content element',
         'extensionkey_contentelementname',
         'content-image',
     ],
     'textmedia',
     'after'
 );