如何启用子标头,但仅适用于typep36.x后端中的自定义扩展


How to enable the subheader, but only for the custom extension in typo3 6.x backend?

我希望子标题显示在扩展的内容管理器中(Typo3 6.2.11 CMS后端)。因此,我在自定义扩展的ext_tables.php中添加了以下行:

'TYPO3'CMS'Core'Utility'ExtensionManagementUtility::addFieldsToPalette('tt_content','header','--linebreak--,subheader;LLL:EXT:cms/locallang_ttc.xlf:subheader_formlabel','after:header');

这有助于我在扩展中显示子标题,但它现在也显示在默认的内容类型中,这是不需要的。如何使它只显示在我的扩展中而不影响默认内容类型的其他设置?此外,我还需要将副标题重命名为其他内容。如有任何帮助,我们将不胜感激。

您可以用自己的扩展覆盖tt_content的TCA,方法是将tt_content.php放在your_ext/Configuration/TCA/Overrides文件夹中,其中包含以下内容:

$GLOBALS['TCA']['tt_content']['columns']['subheader']['displayCond'] = [
  'AND' => [
    'FIELD:CType:=:list',
    'FIELD:list_type:=:your_ext_signature',
]

只需用真正的签名交换your_ext_signature,您可以在DB中找到插件内容元素的签名。

阅读有关displayCond 的更多信息

根据@Viktor的指示以及我的一些命中率和试训,我得出了以下对我有效的解决方案:

my_ext/Configuration/TCA/Overrides/tt_content.php中,我现在有:

$GLOBALS['TCA']['tt_content']['columns']['subheader']['displayCond'] = [
    'AND' => [
        'FIELD:CType:=:my_ext_signature',
]];

我在表tt_content的相应CType字段中找到了我的my_ext_signature;所以我在上面的显示Cond中使用了它(但是我的list_type是空的,所以我没有使用它)。

此外,我还可以在后台通过在页面的Resources属性中添加以下内容来重命名副标题(Page > Right click globe icon > Edit from the menu > Resources):

TCEFORM.tt_content {
    subheader.label = My custom title that shows in backend form
}

我不得不重新安装扩展并清除缓存以查看最终结果。