如何通过一个循环显示不同的结果?

时间:2018-04-16 22:22:47

标签: php loops

我有一个目录显示结果的循环:

{foreach $products as $p}
  <div class="product_list">
    <img src={$p.pic}>
    <h2>Product {$p.name}</h2>
{/foreach}

但产品1,产品2,产品3的结果看起来相同。

如何通过此循环为其执行不同的视图,例如: 产品1显示大图片,产品2和3显示小图片。

结果中有这样的事情: Catalog with different conditions for next element in the loop

1 个答案:

答案 0 :(得分:1)

如果它是Smarty v3,则foreach(和其他循环)提供可以检查的属性 - 例如@first

{* show table header at first iteration *}
<table>
{foreach $items as $i}
  {if $i@first}
    <tr>
      <th>key</td>
      <th>name</td>
    </tr>
  {/if}
  <tr>
    <td>{$i@key}</td>
    <td>{$i.name}</td>
  </tr>
{/foreach}
</table>

在您的实例中,您可以更改css类以允许更大的图像:

<img src="{$p.pic}" class="{if $i@first}large-pic{else}small-pic{/if}">

或者,您可以使用带有ID或类的div或其他方法包装img标记,以便仅为第一个循环显示更大的图像。