【问题标题】:Single tt_content column for content element with many fields in TYPO3TYPO3 中具有许多字段的内容元素的单个 tt_content 列
【发布时间】:2018-05-24 23:02:59
【问题描述】:

我目前正在处理 Typo3(8.7 版)中带有自定义字段的自定义内容元素。

我的问题是是否有可能(和/或合理)创建一个包含自定义字段列表的内容元素,该列表基于 tt_content 表中的 single 列,其中包含序列化数组形式的所有数据?

我认为这是用大量列扩展 tt_content 的替代方法。我已经尝试过使用 pre- 和 postprocessFieldArray 挂钩,但我还没有找到可行的解决方案。

【问题讨论】:

    标签: typo3 typo3-8.x


    【解决方案1】:

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

    从那时起就连核心都使用它:
    对于插件(字段Ctype = 'list'),有一个选项可以在字段pi_flexform 中存储配置。

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


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

    Flexform 有一些缺点,过段时间就会发现。

    1. 处理包装/展开比直接访问字段更复杂。
    2. 您无法进行简单查询,因为值位于文本字段的 XML 中。
    3. 对结构的更改需要复杂的更新过程,并且主要是对您的代码进行更改。

    我不认为文本字段中的序列化数据、JSON 或类似数据可以更好地处理。序列化可能会更糟,因为可以轻松地在 XML 中完成的简单编辑可能会使您的数据无效。

    每次这样的压缩数据尝试都会浪费已经存在且您不会释放的字段空间:看看 tt_content 记录中有多少字段可用。


    如果您想为自己的 CE(内容元素)提供良好的扩展,您可以评估 EXT:mask(作为 kickstarter)和 EXT:mask_export,这使您能够为自己的目的回收所有这些字段并生成新的简单字段。

    【讨论】:

    • 非常感谢您的详细解答。我想我会仔细看看面具。
    猜你喜欢
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多