Gridelements 数据处理:将参数传递给扩展(ctype = 列表)

Gridelements dataprocessing: Pass arguments to extension (ctype = list)

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


为了重现,我使用了众所周知的新闻扩展:

静态包括(模板):

网格渲染定义("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 = GridElementsTeam\Gridelements\DataProcessing\GridChildrenProcessor
    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>

插件集成(后端):

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

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

我是不是遗漏了什么或者这是一个错误?

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

Gridelements 仅提供了一些开箱即用的核心元素示例模板。一旦涉及任何插件特定数据,您将必须提供该数据,因为 Gridelements 无法知道您将使用哪个插件以及您要提供哪些参数。

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

刚刚又看了一遍这个问题,解决方案实际上可能是别的:

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

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