【问题标题】:How to remove a field from `showitems` in TCA?如何从 TCA 中的“showitems”中删除一个字段?
【发布时间】:2020-03-29 00:02:39
【问题描述】:

TYPO3 具有TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes() 功能,可以在记录的 BE 形式中添加或替换一个或多个字段。

我们如何删除字段?
(替换为'' 不起作用)


说明:
它是关于在tt_content 中隐藏一些字段,仅限CTypes。
在过去,我们通过覆盖完整的值来做到这一点。但是随着从 6.2LTS 升级到 8LTS,我们遇到了问题,因为默认标签已经改变(语言文件的路径),所以一些标签在 BE 中丢失了,这很晚才被发现。
现在我想要一种干净的方法来删除单个字段,以便剩余字段的定义使用核心(或其他扩展)的默认值保持干净。

如果使用静态字符串设置值,则添加自己的字段的其他扩展也会出现问题:这些字段也会被删除。

【问题讨论】:

    标签: typo3 typo3-8.x


    【解决方案1】:

    由于确实无法插入空字符串,因此您可以创建一个空调色板。这样你仍然会得到一个非空字符串来插入,但它不会在表单中创建任何输出。

    addToAllTCAtypes('table', '--palette--;;empty', '', 'replace:fieldname')
    

    并且您应该提出功能请求,以便在即将发布的 TYPO3 版本中至少使用空字符串进行替换。

    【讨论】:

    【解决方案2】:

    在代码中这样做:

    foreach ($GLOBALS['TCA']['yourtablenamehere']['types'] as &$definition) {
      $definition['showitems'] = '';
    }
    

    如果您只需要重置特定类型(例如'0'):

    $GLOBALS['TCA']['yourtablenamehere']['types']['0']['showitems'] = '';
    

    如果您想完全覆盖类型而不是清除它们(无论如何,仅清除没有多大意义):

    $GLOBALS['TCA']['yourtablenamehere']['types']['0']['showitems'] = 'title, bodytext';
    

    【讨论】:

    • 或者使用pageTSConfig "TCEFORM.[tableName].[fieldName].disabled"
    • 我添加了一些解释来说明为什么这些建议没有解决方案。
    • @BerndWilkeπφ 自 TYPO3 3.6.x 以来成功使用它们 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 2022-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    相关资源
    最近更新 更多