2013-05-15 82 views
3

我有一個數組,它包含一個名稱列表。在前端,這必須以列出的方式列出。使用<ul> and <li>標籤。TYPO3 FLUID條件while循環數組

該列表的一半應顯示在一個<ul>標記下,另一半顯示在另一個<ul>標記下。

這樣的:

<ul> 
<li>One</li> 
<li>Two</li> 
<li>Three</li> 
</ul> 

<ul> 
<li>Four</li> 
<li>Five</li> 
<li>Six</li> 
</ul> 

現在的問題是流體我沒有找到一個方法來結束<ul>標籤當陣列循環的元素的一半。

我想要做這樣的事情

<f:for each="{my_array}" as="item"> 
<li>{item}</li> 
<!-- if condition where count=(my_array%2) then use </ul><ul>--> 
</f:for> 

回答

8

我想你應該在PHP中的ID爲中間的元素,然後你可以,如果使用一個簡單的,就像這樣:

它是f:for的一個擴展版本。在這裏你可以檢查iteration屬性。當你使用iteration.index時,它是元素的當前索引。但是你必須設置一個elementLimit。

它是iteration的幾個屬性:isFirst,isLast,isEven,isOdd,total,cycle,index。

Here is an article about it.

更新了例:

<f:for each="{my_array}" as="item" iteration="itemIterator"> 
    <li>{item}</li> 
    <f:if condition="{itemIterator.index} = {elementLimit}"> 
     </ul><ul> 
    </f:if> 
</f:for> 
+0

是的,這是一個快速修復。謝謝:) 但我想知道,我們不喜歡在FLUID有一個計數器變量?只是一個想法,會很好,如果有一個 – dora

+0

很好,我的例子更新。它是計數器,itration.index或iteration.cycle(索引從0開始,從1開始循環)的解決方案,但您仍需要聲明該條件的意思是「一半」。但是,也許這是一個更適合您的解決方案:-) –

+0

是否有用,還是您仍然有問題? –

0

這應該工作。唯一的問題是當存在奇數量的菜單條目時。

<f:for each="{my_array}" as="item" iteration="itemIterator"> 
    <ul> 
     <li>{item}</li> 
     <f:if condition="{itemIterator.iterator}%({itemIterator.total}/2) == 0"> 
      </ul><ul> 
     </f:if> 
    </ul> 
</f:for> 
+0

這不起作用,返回'#1244201848:一個布爾表達式比樹部分多# – rafx