TYPO3 Fluid f:for 每个迭代器

TYPO3 Fluid f:for each iterator

我有一个关于 TYPO3 6.2

中的 f:for ViewHelper 的简单问题

如何将偏移量应用到迭代器以从索引 2 开始?


示例:

<f:for each="{facility.media}" as="media" iteration="iterator">


                             <!-- this index should start at 2-->
    <img src="..." data-lightbox-index="{ iterator.index }">


</f:for>

感谢您的帮助。

您可以使用额外的 f:if

<f:for each="{facility.media}" as="media" iteration="iterator">
    <f:if condition="{iterator.index} > 2">
          <img src="..." data-lightbox-index="{ iterator.index }">
    </f:if>
</f:for>

不可能。

您可以采取变通办法。
您可以将所需的值分配给临时变量。多种可能性:

  • 使用f:cycle(只有很少的条目才有可能)
  • 使用ext:vhs将计算值create/assign转换为流体变量
  • 使用 f:alias 在循环中创建局部流体变量。

后两种解需要计算的可能性,fluid中没有给出
但你可以使用打字错误的 viewhelper:

lib.calc = TEXT
lib.calc {
    current = 1
    prioriCalc = 1
}

并用 {f:cObject(typoscriptObjectPath:'lib.calc',data:{iterator.index}+2)}

调用它
<f:for each="{facility.media}" as="media" iteration="iterator">
    <f:alias map="{newIndex:'{f:cObject(typoscriptObjectPath:\'lib.calc\',data:\'{iterator.index}+2\')}'}">
        <img src="..." data-lightbox-index="{newIndex}" />
    </f:alias>
</f:for>

您可以像下面那样使用 fluid ForViewHelper 来完成此操作。

使用 Index 和 Index start 始终为 0。因此,您可以按照以下条件执行此操作。

<f:for each="{facility.media}" as="media" iteration="iterator">
    <f:if condition="{iterator.index} >= 2">
          <img src="..." data-lightbox-index="{ iterator.index }">
    </f:if>
</f:for>

使用循环和循环总是从 1 开始。

<f:for each="{facility.media}" as="media" iteration="iterator">
    <f:if condition="{iterator.cycle} >= 3">
          <img src="..." data-lightbox-index="{ iterator.index }">
    </f:if>
</f:for>

更多ForViewHelper