2016-09-09 5 views
0

Я знаю, что на этот вопрос был дан ответ, но немного по-другому.Smarty foreach iteration new column каждый n-й раз

Я хочу, чтобы новый столбец Bootstrap каждый 6-й раз петли так это выглядит следующим образом:

<div class="row"> 
    <div class="col-xs-6"> 
     <a href="#">LINK1</a> 
     <a href="#">LINK2</a> 
     <a href="#">LINK3</a> 
     <a href="#">LINK4</a> 
     <a href="#">LINK5</a> 
     <a href="#">LINK6</a> 
    </div> 
    <div class="col-xs-6"> 
     <a href="#">LINK7</a> 
     <a href="#">LINK8</a> 
     <a href="#">LINK9</a> 
     <a href="#">LINK10</a> 
     <a href="#">LINK11</a> 
     <a href="#">LINK12</a> 
    </div> 
</div> 

Я пробовал:

<div class="row"> 
    {foreach name='sub_categories' from=$sub_categories item='sub'} 
     {if $smarty.foreach.sub_categories.first or $smarty.foreach.sub_categories.iteration is div by 6} 
     <div class="col-xs-6"> 
     {/if} 
      <a href="#">LINK</a> 
     {if $smarty.foreach.sub_categories.iteration-1 is div by 6} 
     </div> 
     {/if} 
    {/foreach} 
</div> 

Но это не работает, потому что:

$smarty.foreach.sub_categories.iteration is div by 6 

true, когда 6-я итерация начинается так, что умение создает новый столбец после 5 итераций. Также <div> не закрыт в 6-й раз, а в 5 раз.

Любые предложения?

ответ

1

Самый простой способ использует индекс вместо итерации, поскольку индекс начинается с 0

<div class="row"> 
    {foreach name='sub_categories' from=$sub_categories item='sub'} 
     {if $smarty.foreach.sub_categories.first or $smarty.foreach.sub_categories.index is div by 6} 
     <div class="col-xs-6"> 
     {/if} 
      <a href="#">LINK</a> 
     {if $smarty.foreach.sub_categories.last || $smarty.foreach.sub_categories.iteration is div by 6} 
     </div> 
     {/if} 
    {/foreach} 
</div> 

также вы можете, вероятно, хотите, чтобы проверить sub_categories.last для закрытия DIV, только в случае, если количество элементов не является кратное 6, т.е. 9

+0

Спасибо. Когда я пытаюсь {if $ smarty.foreach.sub_categories.index является div на 6}, это истинно для самой первой итерации. Почему на первой итерации верно «div на 6»? –

+0

Ну, первый индекс равен 0 и 0 делится на любое число; на самом деле вы можете удалить условие sub_categories.first, и оно все равно будет работать. Вот почему вам нужно использовать индекс в первом условии и итерацию во втором – Borgtex

+0

Oh! Я пропустил эту маленькую деталь, что вы изменили индекс на итерации. Спасибо! Он работает сейчас. :) –