将新的复选框字段添加到 tx_news_domain_model_media

Adding new checkbox field to tx_news_domain_model_media

我正在尝试添加一个新的复选框字段 'showinhome' 到 table 'tx_news_domain_model_media' 与字段 'showinpreview' 相同 这是我在 [=19= 中的 TCA 配置].php

$temporaryColumns = [
    'showinhome' => [
        'exclude' => 1,
        'label'   => 'Show in Home',
        'config'  => [
            'type'    => 'check',
            'default' => 0,
        ],
    ],
];

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
    'tx_news_domain_model_media',
    $temporaryColumns
);
$GLOBALS['TCA']['tx_news_domain_model_media']['ctrl']['label_alt'] .= ', showinhome';
$GLOBALS['TCA']['tx_news_domain_model_media']['interface']['showRecordFieldList'] .= ', showinhome';
$GLOBALS['TCA']['tx_news_domain_model_media']['palettes']['newsPalette']['showitem'] .= 'showinhome,';

该字段未显示,有人可以帮我吗?

你在这里搞混了一些东西。

首先:tx_news既可以使用自己的媒体模型,也可以使用原生的FAL关系。我个人总是使用原生的 FAL 关系。

如果要将此字段添加到媒体table,则那里没有newsPalette。您可以使用以下代码添加新字段:

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tx_news_domain_model_media', $temporaryColumns);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('tx_news_domain_model_media', implode(',', array_keys($temporaryColumns)));

如果您使用正常的 FAL 关系,那么 showinpreview 字段将添加到 sys_file_reference table 的 TCA 配置中,而不是 tx_news_domain_model_media table.

如果你想将这个字段添加到文件中,那么你需要像 tx_news 一样将它添加到 sys_file_reference 字段中(我猜你已经从它是覆盖文件)

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('sys_file_reference', $temporaryColumns);

// add special news palette
$GLOBALS['TCA']['sys_file_reference']['palettes']['newsPalette']['showitem'] .= ', showinhome';

最后但并非最不重要:你必须在你的扩展中指定 tx_news 作为依赖项,否则 TYPO3 不知道你的扩展必须在 tx_news 之后加载。如果您在安装扩展后更改依赖项,您可能需要在扩展管理器中卸载并重新安装它。