Условия TYPO3 FLUID при зацикливании массива

У меня есть массив, который содержит список имен. Во внешнем интерфейсе это должно быть указано в виде списка. Использование тегов <ul> and <li>.

Половина списка должна отображаться под одним тегом <ul>, а другая половина — под другим тегом <ul>.

как это:

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

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

Теперь проблема в FLUID. Я не нашел способа заканчивать теги <ul>, когда массив зацикливает половину элементов.

Я хочу сделать что-то вроде этого

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

person dora    schedule 15.05.2013    source источник


Ответы (2)


Я думаю, вы должны получить идентификатор в PHP для элемента в середине, а затем вы можете использовать простой if, например:

Это немного расширенная версия f:for. Здесь вы можете проверить свойство iteration. Когда вы используете iteration.index, это текущий индекс элементов. Однако вы должны установить elementLimit.

Для iteration есть несколько свойств: isFirst, isLast, isEven, isOdd, total, cycle, index.

Вот статья об этом.

ОБНОВЛЕНО:

<f:for each="{my_array}" as="item" iteration="itemIterator">
    <li>{item}</li>
    <f:if condition="{itemIterator.index} = {elementLimit}">
        </ul><ul>
    </f:if>
</f:for>
person András Ottó    schedule 15.05.2013
comment
Да, это быстрое решение. Спасибо :) Но мне было интересно, не можем ли мы иметь переменную-счетчик в FLUID? Просто мысль, было бы неплохо, если бы она была - person dora; 15.05.2013
comment
Очень хорошо, мой пример обновлен. Это решение для счетчика, itration.index или iteration.cycle (индекс от 0 и цикл от 1), но вам все равно нужно объявить, что означает половина для условия. Однако, возможно, это более подходящее решение для вас :-) - person András Ottó; 15.05.2013
comment
Было ли это полезно, или у вас все еще есть проблема? - person András Ottó; 31.05.2013
comment
Да. Извини. Забыл проверить :) - person dora; 31.05.2013

Это должно работать. Единственная проблема, когда есть нечетное количество пунктов меню.

<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>
person Merec    schedule 15.05.2013
comment
Это не работает, возвращает #1244201848: A boolean expression has more than tree parts - person r4fx; 12.01.2016