如何从TCA的'showitems'中移除一个字段?

6

TYPO3有一个函数TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes()可以添加或替换记录的BE表单中的一个或多个字段。

那么我们如何删除字段呢?
(用''替换并不起作用)


说明:
这是关于仅隐藏一些CType中的tt_content字段的问题。
过去,我们通过覆盖整个值来做到这一点。但在从6.2LTS升级到8LTS时,我们遇到了问题,因为默认标签已更改(语言文件路径),因此某些标签在BE中丢失,这是很晚才注意到的。
现在我想要一种干净的方法来删除单个字段,以便剩余字段的定义保持干净,并具有来自核心(或其他扩展)的默认值。

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


我不太明白为什么pageTSConfig不是一个选项?通常,当我需要从后端删除特定CE的字段时,我通常会执行TCEFORM.tt_content.[field].types.[CType].disabled = 1 - Johannes Nielsen
我不明白解释的内容,也不明白为什么tsconfig不是一个选项。 - undefined
2个回答

5

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

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

您应该提交功能请求,以使在TYPO3的即将推出的版本中至少能够使用空字符串替换。


2
功能请求可以在 https://forge.typo3.org/issues/89852 找到。 - Bernd Wilke πφ

0

在代码中这样做:

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"。 - jokumer
我添加了一些解释,以说明这些建议并不是解决方案。 - Bernd Wilke πφ
@BerndWilkeπφ 自 TYPO3 3.6.x 版本以来一直成功地使用它们 ;) - User366

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接