TYPO3 Fluid:如何使用 <f:section> 之外的条件和变量使布局动态化?

Moo*_*zer 2 layout conditional templates typo3 fluid

我尝试更改通过后端定义包装每个内容元素的布局。不幸的是,似乎变量 for{data}仅在<f:section>元素内部可用。更有问题的是,<f:if>条件 ViewHelper 在 之外没有影响<f:section>,两个<f:layout>语句都被执行,并且只有最后一个被应用于渲染。那没有用……而且文档确实只讨论了该部分内的 ViewHelper。你知道任何其他方法来实现这一目标吗?提前致谢!

<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">

<f:if condition="{data.layout} == 101"><!-- if-condition has no effect here -->
  <f:then>
    <f:layout name="FullWidth" />
  </f:then>
  <f:else>
    <f:layout name="Default" />
  </f:else>
</f:if>

<f:debug>TEST1: {data.layout}</f:debug><!-- THIS DOES NOT SHOW UP AT ALL! -->

<f:section name="Main">
  <f:debug>TEST2: {data.layout}</f:debug><!-- Output is TEST2: 101 (integer) -->
  [...]
</f:section>

</html>
Run Code Online (Sandbox Code Playgroud)

Rud*_*dde 5

f:layout标签被读取,而无需渲染模板,所以周围的if语句将无法正常工作。但是,f:layout标记的名称呈现为模板,因此您可以使用内联 if 语句,如下所示:

<f:layout name="{f:if(condition: '{data.layout} == 101', then: 'FullWidth', else: 'Default')}" />
Run Code Online (Sandbox Code Playgroud)