包含TYPO3中许多字段的内容元素的单个tt_content列

时间:2017-12-11 12:08:08

标签: typo3 typo3-8.x

我目前正在使用Typo3(版本8.7)中的自定义字段开发自定义内容元素。

我的问题是,是否可以(和/或合理)根据 tt_content 表中的单个列创建包含自定义字段列表的内容元素所有数据都是序列化数组的形式?

我认为这是用很多列扩展tt_content的替代方法。我已经使用pre-andprocessprocessFieldArray挂钩尝试了它,但我还没有找到可行的解决方案。

1 个答案:

答案 0 :(得分:1)

这个概念已经从一些扩展中用来定义新的CE(TemplaVoila,gridelements,fluidcontent,dce,...)。所以他们不使用序列化数据而是使用XML。

即使是核心也确实使用过它:
对于插件(字段Ctype ='list'),可以选择在pi_flexform字段中存储配置。

取决于扩展的类型,处理确实有所不同。你可以在this page(德语)上找到代码示例 查看XML定义文件,它们使用类似于TCA的语法,并使核心能够构建适当的表单来填充。

现在:为什么你不应该这样做:

Flexforms有一些缺点会在一段时间内引起你的注意。

  1. 处理包装/展开比直接访问字段更复杂。
  2. 您无法进行简单查询,因为值位于文本字段的XML中。
  3. 对结构的更改需要复杂的更新过程,并且通常会更改您的代码。
  4. 我不认为文本字段中的序列化数据,JSon或类似数据可以更好地处理。序列化可能更糟糕,因为简单的编辑可以很容易地用XML完成,可能会使数据无效。

    每次这样的压缩数据尝试都会浪费现有字段的空间,而且不会释放这些字段:查看tt_content记录中有多少字段可用。

    如果您想要对自己的CE(内容元素)进行良好的扩展,您可以评估EXT:mask(作为kickstarter)和EXT:mask_export,这样您就可以根据自己的目的回收所有这些字段并生成新的简单领域。