Plugins 更改tt#U内容';子类型的TCA是什么?

Plugins 更改tt#U内容';子类型的TCA是什么?,plugins,types,typo3,Plugins,Types,Typo3,对于特定的插件(例如,新闻页面_pi1),是否可以配置其TCA,即其后端表单显示?仅针对该特定插件,因为当更改列表类型(即插件)的tt_内容的TCA时,如下所示: $GLOBALS['TCA']['tt_content']['types']["list"] = [ 'showitem' => " (tabs..palettes..columns..etc...)"]; 它为所有插件更改了它,我只想为新闻页面\u pi1列表\u type

对于特定的插件(例如,
新闻页面_pi1
),是否可以配置其TCA,即其后端表单显示?仅针对该特定插件,因为当更改
列表
类型(即插件)的
tt_内容
的TCA时,如下所示:

$GLOBALS['TCA']['tt_content']['types']["list"] = [
    'showitem' => "
  (tabs..palettes..columns..etc...)"];
它为所有插件更改了它,我只想为
新闻页面\u pi1
列表\u type
更改它

是的,我知道我可以使用
'subtype\u value\u field'=>'list\u type'
然后
subtype\u excludelist
subtype\u addlist
来添加或删除特定插件的字段。但这远不如直接设置
showitem
强大,因为它允许定义新的选项卡、选项板、按您希望的方式定位字段等

我也知道,但这些只控制
插件选项
字段,而不是所有其他字段

是否有办法更改特定插件的
showitem


提前多谢

坦率地说,您实际上想要的不是子类型,而是另一种类型,因为它需要更改除通常的plugin/pi_flexform配置之外的字段

因此,与其将该子类型作为插件添加,不如将其作为另一个CType添加,以充分发挥
showitem
的功能

基本上,这也是我们添加任何类型插件的方式,因为手边有真实的数据库字段比用XML数据结构伪造它们更有意义

正如在这里的描述中提到的

…-或者更一般地使用此函数向任何 在FormEngine中选择框/单选按钮集


是的,当然了,而且有很好的记录:@biesior感谢您的回复。但是这里的所有示例都更改了
类型
showitem
字段,这不是我想要做的。对于插件(
tt_content
table),类型始终为
list
。问题是,我想更改
list\u type
子类型的
showitem
字段,即特定插件。非常感谢您的回答!我知道,将新插件添加为新的
CType
而不是
list
类型的新子类型可以让我们充分利用TCA
showitem
的功能,而不仅仅是使用
FlexForms
。现在我的问题是:对于向插件添加新的配置字段,您有什么建议(例如,存储页面中的哪些“文章”将显示在我的“新闻页面”)?在
tt_content
上创建一个新字段,或者使用FlexForms,或者甚至使用
tt_content
中的一个引用来引用专门为插件创建的新表?我为我的自定义内容元素做了后者。另外,现在在创建该插件的实例时,我得到一个错误:
带有uid“283”的内容元素,并且键入“newspage\u pi1”没有呈现定义
。因为,因为它不是一个内容元素,而是一个插件,所以我没有为它创建典型的打字脚本配置,例如:
tt_content{…newspage_pi1{templateName=NewsPage…
因为我想使用控制器和操作以及所有插件工作流,而不是模板,因为它是一个自定义内容元素。请参阅我对您关于TS配置的其他问题的评论。我对其他字段的建议始终是真正的DB字段和TCA配置,因为FlexForms可以追溯到一个时代,在这个时代,向表中添加字段会导致严重的性能问题。然后,在数据库中使用XML也会产生其他性能问题,并且几乎不可能搜索这些字段的值。因此缺点大于优点。如果您仍然想使用FlexForms,则应该使用它们只针对配置值,不针对内容。我明白了。我还想避免FlexForms,因为对于调试和更改数据库来说,它们是一团乱。我现在唯一的问题是,正如您所看到的:一方面,我想将插件注册为新的CType,这样我就可以更改它的
showitems
属性(因此它被视为自定义CE).另一方面,我也希望它仍能像插件一样运行,因此请加载其使用
configurePlugin
定义的第一个操作,而不是直接加载模板。