我有一个目录显示结果的循环:
{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
答案 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
标记,以便仅为第一个循环显示更大的图像。