2016-01-20 63 views
0

聰明的小新,但認爲我做得好,得到這麼遠,所以我有一個foreach,這使得我的菜單,它的工作很棒,但生成的列表項太長,菜單,所以想要將菜單分成單獨的列表,每10個例子但似乎無法破解它?有人有主意嗎?Smarty添加,如果條件在foreach分離LI到多個UL

代碼,我到目前爲止有:

{foreach from=$item1.$childs item="item2" name="item2"} 

    {if $smarty.foreach.item2.index % 10 == 0} 
     <ul class="menu-col"> 
    {/if} 

    {assign var="item_url2" value=$item2|fn_form_dropdown_object_link:$block.type} 
     <li class="ty-menu__submenu-item{if $item2.active || $item2|fn_check_is_active_menu_item:$block.type} ty-menu__submenu-item-active{/if}{if $item2.class} {$item2.class}{/if}"> 
      <a class="ty-menu__submenu-link" {if $item_url2} href="{$item_url2}"{/if}>{$item2.$name}</a> 
     </li> 

    {if $smarty.foreach.item2.index % 10 == 0} 
     </ul> 
    {/if} 

{/foreach} 

但它似乎產生這樣的:

<ul class="menu-col"> 

    <li class="ty-menu__submenu-item ty-menu__submenu-item-active"> 
    <a class="ty-menu__submenu-link" href="/interior-bean-bags/vip-air-mesh/">VIP (Air Mesh)</a> 
    </li> 

</ul> 

<li class="ty-menu__submenu-item"> 
<a class="ty-menu__submenu-link" href="/interior-bean-bags/vip-bonded-pu-leather/">VIP (Bonded PU Leather)</a> 
</li> 
<li class="ty-menu__submenu-item"> 
<a class="ty-menu__submenu-link" href="/interior-bean-bags/vip-vintage-denim/">VIP (Vintage Denim)</a> 
</li> 
<li class="ty-menu__submenu-item"> 
<a class="ty-menu__submenu-link" href="/interior-bean-bags/zen-lounger/">Zen Lounger</a> 
</li> 
<li class="ty-menu__submenu-item"> 
<a class="ty-menu__submenu-link" href="/interior-bean-bags/acoustic-sofa/">Acoustic Sofa</a> 
</li> 
<li class="ty-menu__submenu-item"> 
<a class="ty-menu__submenu-link" href="/interior-bean-bags/avatar-lounger/">Avatar Lounger</a> 
</li> 
<li class="ty-menu__submenu-item"> 
<a class="ty-menu__submenu-link" href="/interior-bean-bags/butterfly-sofa/">Butterfly Sofa</a> 
</li> 
<li class="ty-menu__submenu-item"> 
<a class="ty-menu__submenu-link" href="/interior-bean-bags/the-boss/">The Boss</a> 
</li> 
<li class="ty-menu__submenu-item"> 
<a class="ty-menu__submenu-link" href="/interior-bean-bags/wing-ottoman/">Wing Ottoman</a> 
</li> 
<li class="ty-menu__submenu-item"> 
<a class="ty-menu__submenu-link" href="/interior-bean-bags/conversion-lounger/">Conversion Lounger</a> 
</li> 

<ul class="menu-col"> 

    <li class="ty-menu__submenu-item"> 
    <a class="ty-menu__submenu-link" href="/interior-bean-bags/evolution-sofa/">Evolution Sofa</a> 
    </li> 

</ul> 

<li class="ty-menu__submenu-item"> 
<a class="ty-menu__submenu-link" href="/interior-bean-bags/fiorenze-leather-sofa/">Fiorenze Leather Sofa</a> 
</li> 
<li class="ty-menu__submenu-item"> 
<a class="ty-menu__submenu-link" href="/interior-bean-bags/ottomans/">Ottomans</a> 
</li> 
<li class="ty-menu__submenu-item"> 
<a class="ty-menu__submenu-link" href="/interior-bean-bags/roma-sofa/">Roma Sofa</a> 
</li> 
<li class="ty-menu__submenu-item"> 
<a class="ty-menu__submenu-link" href="/interior-bean-bags/snugg-sofa/">SNUGG Sofa</a> 
</li> 
<li class="ty-menu__submenu-item"> 
<a class="ty-menu__submenu-link" href="/interior-bean-bags/space-pod/">Space Pod</a> 
</li> 
<li class="ty-menu__submenu-item"> 
<a class="ty-menu__submenu-link" href="/interior-bean-bags/studio-lounger/">Studio Lounger</a> 
</li> 
<li class="ty-menu__submenu-item"> 
<a class="ty-menu__submenu-link" href="/interior-bean-bags/tech-pillow-rest-pad/">Tech Pillow Rest Pad</a> 
</li> 
<li class="ty-menu__submenu-item"> 
<a class="ty-menu__submenu-link" href="/interior-bean-bags/tivoli-lounger/">Tivoli Lounger</a> 
</li> 
<li class="ty-menu__submenu-item"> 
<a class="ty-menu__submenu-link" href="/interior-bean-bags/twin-couch-sofa/">Twin Couch Sofa</a> 
</li> 

<ul class="menu-col"> 

    <li class="ty-menu__submenu-item"> 
    <a class="ty-menu__submenu-link" href="/interior-bean-bags/versa-table/">Versa Table</a> 
    </li> 

</ul> 

<li class="ty-menu__submenu-item"> 
<a class="ty-menu__submenu-link" href="/interior-bean-bags/cloudchair/">Cloudchair (Air Mesh)</a> 
</li> 

,但我需要它像

<ul> 
    <li>blah</li> 
    <li>blah</li> 
    <li>blah</li> 
    <li>blah</li> 
    <li>blah</li> 
    <li>blah</li> 
    <li>blah</li> 
    <li>blah</li> 
    <li>blah</li> 
    <li>blah</li> 
</ul> 

<ul> 
    <li>blah</li> 
    <li>blah</li> 
    <li>blah</li> 
    <li>blah</li> 
    <li>blah</li> 
    <li>blah</li> 
    <li>blah</li> 
    <li>blah</li> 
    <li>blah</li> 
    <li>blah</li> 
</ul> 

<ul> 
    <li>blah</li> 
    <li>blah</li> 
</ul> 
+0

嘗試使用[array_chunk](http://php.net/manual/en/function.array -chunk.php)函數,然後再將菜單數組發送到smarty視圖。假設你有13個菜單,那麼這個函數會將你的菜單數組分成一個嵌套數組,其中有10個,剩下3個,所以你可以在smarty方面輕鬆地迭代這個。 –

+0

對不起,我不能真正改變核心PHP作爲一個軟件,所以升級會打破它。 – James

+0

您可以發送陣列結構在這裏爲您的菜單,可能之後,它會更清楚,並會盡力幫助您 –

回答

0

嘗試移動的開啓和關閉主fore在foreach之外,然後添加一個條件來重新啓動它,如果當前迭代是10的倍數並且它不是la st值(所以如果數組只有10個值,則不會以空ul結尾)

<ul class="menu-col"> 
    {foreach from=$item1.$childs item="item2" name="item2"} 

     {if $smarty.foreach.item2.iteration % 10 == 0 && !$smarty.foreach.item2.last} 
      </ul> 
      <ul class="menu-col"> 
     {/if} 

     {assign var="item_url2" value=$item2|fn_form_dropdown_object_link:$block.type} 
      <li class="ty-menu__submenu-item{if $item2.active || $item2|fn_check_is_active_menu_item:$block.type} ty-menu__submenu-item-active{/if}{if $item2.class} {$item2.class}{/if}"> 
       <a class="ty-menu__submenu-link" {if $item_url2} href="{$item_url2}"{/if}>{$item2.$name}</a> 
      </li> 

    {/foreach} 
</ul>