在 Contentelement 中使用 v:content.render

Use v:content.render in a Contentelement

我尝试通过局部流体从另一个页面渲染一些元素,并尝试使用 v:content.render。正如您在代码中看到的那样,我想使用 Uid 9 呈现页面中的 3 个元素。但是一旦我在其中包含 v:content.render 元素,我就会得到一个空白页面。

所以我的问题是如何使用 v:content.render 或者我有什么选择?或者我还需要为此使用 Typoscript 吗?

{namespace v=FluidTYPO3\Vhs\ViewHelpers}
<div class="footer2">

    <v:content.render column="0" limit="3" pageUid="9" as="contentElements">
      <f:for each="{contentElements}" as="contentElement" iteration="footerIteration">
        <f:format.html>{contentElement.bodytext}</f:format.html>
      </f:for>
    </v:content.render>

</div>

我不确定这是否重要,但第 9 页上的元素也是流动内容元素。

我找到了一个有效的解决方案:

<v:variable.set name="contentElements" value="{v:content.get(column:'0', limit:'3', pageUid:'9',  render:'FALSE')}" />

  <f:for each="{contentElements}" as="contentElement" iteration="footerIteration">
    <v:content.render contentUids="{0:contentElement.uid}" />
    <f:format.html>{contentElement.bodytext}</f:format.html>
  </f:for>

我认为您的第一次尝试更具可读性。 {contentElement} 已经有了你需要的东西,没有 属性 bodytext 如果你将 render 保留为默认值 true

<v:content.render column="0" pageUid="9" limit:"3" as="contentElements">
    <f:for each="{contentElements}" as="contentElement">
        <f:format.raw>{contentElement}</f:format.raw>
    </f:for>
</v:content.render>

如果您不知道在 as="" 中返回的是什么,请尝试调试:

<v:content.render column="0" pageUid="9" limit:"3" as="contentElements">
    <f:for each="{contentElements}" as="contentElement">
        <f:debug inline="true">{contentElement}</f:debug>
    </f:for>
</v:content.render>

我用 <f:format.raw> 替换了 <f:format.html> 以防止一些不需要的 <p></p>