简体   繁体   English

TYPO3 Fluid f:对于每个迭代器

[英]TYPO3 Fluid f:for each iterator

I have a simple question about the f:for ViewHelper in TYPO3 6.2我有一个关于 TYPO3 6.2 中的f:for ViewHelper 的简单问题

How is it possible to apply an offset to the iterator to start at index 2?如何将偏移量应用到迭代器以从索引 2 开始?


Example:例子:

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


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


</f:for>

Thanks for your help.谢谢你的帮助。

you can use an additional f:if你可以使用额外的 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>

not possible.不可能。

You might do workarounds.你可能会做变通办法。
you can assign the needed value to a temporary variable.您可以将所需的值分配给临时变量。 multiple possibilities:多种可能性:

  • use f:cycle (only possible with few entries)使用f:cycle (只有很少的条目才有可能)
  • use ext:vhs to create/assign the calculated value to a fluid-variable使用ext:vhs创建计算值/将计算值分配给流体变量
  • use f:alias to create a local fluid-variable inside your loop.使用f:alias在循环中创建局部流体变量。

for the later two solutions you need the possibility to calculate, which is not given in fluid.对于后两个解决方案,您需要计算的可能性,这在流体中没有给出。
but you can use a typoscript viewhelper:但您可以使用打字错误的 viewhelper:

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

and call it with {f:cObject(typoscriptObjectPath:'lib.calc',data:{iterator.index}+2)}并用{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>

You can do this using fluid ForViewHelper like below.您可以使用如下所示的fluid ForViewHelper来执行此操作。

Using Index and Index start always 0. So, you can do this like below condition.使用 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>

Using Cycle and cycle always start with 1.使用 Cycle 和 cycle 总是从 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>

For more ForViewHelper更多ForViewHelper

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM