网格元素数据处理:将参数传递给扩展(ctype = list)



将网格元素与数据处理配合使用适用于所有默认内容元素。 但是,如果我包含我自己的扩展之一,则控制器的参数就会丢失。因此,内容元素呈现,但使用默认操作(列表(和默认模板。


为了重现,我使用了著名的新闻扩展:

静态包含(模板(:

  • 新闻
  • 网格元素
  • my_site_package

网格渲染定义("my_site_package"的一部分(:

mySitePackage.gridelements.defaultGridSetup < lib.gridelements.defaultGridSetup
mySitePackage.gridelements.defaultGridSetup {
templateName.field = tx_gridelements_backend_layout
templateName.ifEmpty = default
layoutRootPaths {
10 = EXT:gridelements/Resources/Private/Layouts/
20 = EXT:my_site_package/Resources/Private/Layouts/Gridelements/
}
partialRootPaths {
10 = EXT:gridelements/Resources/Private/Partials/
20 = EXT:my_site_package/Resources/Private/Partials/Gridelements/
}
templateRootPaths {
10 = EXT:gridelements/Resources/Private/Templates/
20 = EXT:my_site_package/Resources/Private/Templates/Gridelements/
}
dataProcessing {
10 = GridElementsTeamGridelementsDataProcessingGridChildrenProcessor
10 {
default {
as = children
}
}
}
}

流体渲染("my_site_package"的一部分(:

<f:for each="{children}" as="row" key="rowNumber">
<f:for each="{row}" as="column" key="columnNumber">
<f:for each="{column}" as="child">
<f:cObject typoscriptObjectPath="tt_content.{child.data.CType}" data="{child.data}" table="tt_content" />
</f:for>
</f:for>
</f:for>

插件集成(后端(:

  • 控制器操作:显示

结果在前端,如果未放置在网格元素中:

  • 新闻插件正确呈现并调用 showAction

结果在前端,如果放置在网格元素中:

  • 新闻插件被呈现,但回退到默认列表操作。此外,"my_site_package"中的模板设置也会被忽略。使用默认新闻模板。

我在这里错过了什么还是这是一个错误?

刚刚再次查看了该问题,解决方案实际上可能是其他内容:

应在 Gridelements 配置中禁用 resolveFlexformData,以避免在呈现网格子项时处理 XML 数据。

https://gitlab.com/coderscare/gridelements/issues/14

这不是错误,而是前端模板中缺少的功能,您必须自己实现。

网格元素只是提供了一些基本的示例模板,这些模板可以与开箱即用的核心元素一起使用。一旦涉及任何特定于插件的数据,您就必须提供该数据,因为 Gridelements 无法知道您将使用哪个插件以及您想要提供哪些参数。

只需在站点包设置中注册您自己的模板、部件和布局,以便 Gridelements 可以在回退到自己的文件之前使用它们。