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

时间:2016-09-12 14:28:37

标签: typo3 extbase tx-news

我正在尝试向表'tx_news_domain_model_media'添加一个新的复选框字段'showinhome',与'showinpreview'字段相同,这是我在Configuration / TCA / Overrides中的TCA配置/ tx_news_domain_model_media.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,';

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

1 个答案:

答案 0 :(得分:1)

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

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

如果要将此字段添加到媒体表,则那里没有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表的TCA配置中,而不会添加到tx_news_domain_model_media表。

如果要将此字段添加到文件中,则需要将其添加到sys_file_reference字段,方法与tx_news相同(我猜您已经从其覆盖文件中复制了代码)

\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之后加载。如果在安装扩展程序后更改依赖关系,则可能需要在扩展管理器中重新卸载并重新安装。