В зависимости от вашего разнообразия случаев вы можете использовать другой f:for
viewhelper или изменить только рендеринг внутри одного f:for
viewhelper для всех.
Но вы также должны использовать информацию, которую iterator
сделает Вы можете использовать f:for
viewhelper.
Вы также можете использовать f:cycle
viewhelper, так что вам не нужно собирать modulo
.
Number of files: {files->f:count()}<br />
<f:for each="{files}" as="file" iteration="iterator">
<f:cycle values="{0: 'odd', 1: 'even'}" as="cycler">
<f:debug title="inside the loop">{file:file, iterator:iterator, cycler:cycler}</f:debug>
</f:cycle>
</f:for>
РЕДАКТИРОВАТЬ:
относительно ваших дел Я думаю, вы должны рассмотреть два варианта:
<f:if condition="{files}">
<f:if condition="{files->f:count()} == 1">
<f:then>
<f:render section="item" arguments="{file:file}" />
</f:then>
<f:else>
<f:for each="{files}" as="file" iteration="iterator">
<f:if condition="{iterator.index} < 4">
<f:if condition="iterator.isOdd"><div class="row"></f:if>
<div class="col-6">
<f:render section="item" arguments="{file:file}" />
</div>
<f:if condition="iterator.isEven"></div></f:if>
</f:if>
</f:for>
<f:if condition="{files->f:count()} == 3"></div></f:if>
</f:else>
</f:if>
</f:if>
<f:section name="item">
<div class="ce-textpic-file-download-wrapper">
<a href="/fileadmin/{file.identifier}" target="_blank">
<div class="filesize">({file.originalFile})</div>
</a>
</div>
</f:section>
EDIT2:
<f:section name="item">
<div class="ce-textpic-file-download-wrapper">
<f:link.typolink parameter="{file.publicUrl}" target="_blank">
{file.identifier}
<span class="filesize"> ({file.size->f:format.bytes()})</span>
</a>
</div>
просто помните: помимо свойств, видимых в <f:debug title="file">{file}</f:debug>
у вас есть много других свойств, предоставленных получателями, которые вы можете увидеть в API