2

このようなリストをsmartyで実現したい。

<ul>
 <li>
   <a>img1</a>
   <a>img2</a>
   <a>img3</a>
   <a>img4</a>
 </li>
 <li>
   <a>img5</a>
   <a>img6</a>
   <a>img7</a>
   <a>img8</a>
 </li>
<li>
   <a>img9</a>
   <a>img10</a>
   <a>img11</a>
   <a>img12</a>
 </li>
</ul>

このサンプルコードを使用する

<ul class="bullet">
    {foreach from=$manufacturers item=manufacturer name=manufacturer_list}
        {if $smarty.foreach.manufacturer_list.index < 4}
      <li class="{if $smarty.foreach.manufacturer_list.last}last_item{elseif $smarty.foreach.manufacturer_list.first}first_item{else}item{/if}">   

        <a href="{$link->getmanufacturerLink($manufacturer.id_manufacturer, $manufacturer.link_rewrite)}" title="{l s='More about' mod='blockmanufacturer'}{$manufacturer.name}"> <img src="{$img_manu_dir}{$manufacturer.id_manufacturer}.jpg"><span>{$manufacturer.name}<span></a>
      </li>
    {/if}
{/foreach}

最初に指定された配列$manufacturersを使用して、<li>最大4回内部でループし、4を作成します<img>。そして、4番目のインデックスに到達すると、新しい<li>タグが作成されます。

助けてくれてありがとう!

4

2 に答える 2

5

li タグごとに 4 つの画像を表示しますか?

<ul>
{foreach from=$manufacturers item=manufacturer name=manufacturer_list}
  {if $smarty.foreach.manufacturer_list.index % 4 == 0}
    <li>
  {/if}

  <a><img></a>

  {if $smarty.foreach.manufacturer_list.index % 4 == 0 || $smarty.foreach.manufacturer_list.last}
    </li>
  {/if}
{/foreach}
</ul>
于 2012-06-17T09:13:11.507 に答える
2

Im Smarty3 構文では、次のようなことができます。

{$data = [
    "alpha", "bravo", "charlie", "delta", "echo", "foxtrot", "golf", 
    "hotel", "india", "juliet", "kilo", "lima", "mike", "november", 
    "oscar", "papa", "quebec", "romeo", "sierra", "tango", "uniform", 
    "victor", "whiskey", "x-ray", "yankee", "zulu"
]}

{foreach $data as $value}
  {if $value@first}
    <ul>
      <li>
  {elseif ($value@iteration - 1) is div by 4}
      </li><li>
  {/if}

  <span>{$value}</span>

  {if $value@last}
      </li>
    </ul>
  {/if}
{/foreach}

foreach ループ内で全体をネストしているため、<ul>ループするデータがない場合は表示されないことに注意してください。

于 2012-06-17T09:58:54.703 に答える