将网格元素与数据处理配合使用适用于所有默认内容元素。 但是,如果我包含我自己的扩展之一,则控制器的参数就会丢失。因此,内容元素呈现,但使用默认操作(列表(和默认模板。
为了重现,我使用了著名的新闻扩展:
静态包含(模板(:
- 新闻
- 网格元素
- 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 可以在回退到自己的文件之前使用它们。