0

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


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

静态包括(模板):

  • 消息
  • 网格元素
  • 我的站点包

网格渲染定义(“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>

插件集成(后端):

  • 控制器动作:显示

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

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

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

  • 新闻插件被渲染,但回退到默认列表操作。来自“my_site_package”的模板设置也会被忽略。使用默认新闻模板。

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

4

2 回答 2

1

再次查看问题,解决方案实际上可能是别的东西:

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

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

于 2019-10-31T17:22:22.033 回答
0

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

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

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

于 2019-08-23T12:32:03.570 回答