【问题标题】:Smarty foreach arbitrary loop - use index to add different classes?Smarty foreach 任意循环 - 使用索引添加不同的类?
【发布时间】:2013-06-09 15:07:41
【问题描述】:

我有一个名为 $items 的数组,我试图只设置与其他项目不同的前 3 个项目的样式。我以为下面的代码...

{foreach from=$items item=item}
  {if $smarty.foreach.item.index < 3}
    <div class="style1">{$item->title}</div>
  {elseif $smarty.foreach.item.index >= 3}
    <div class="style2">{$item->title}</div>
  {/if}
{/foreach}

...会产生这个标记...

<div class="style1">item title value</div>
<div class="style1">item title value</div>
<div class="style1">item title value</div>

<div class="style2">item title value</div>
<div class="style2">item title value</div>
<div class="style2">item title value</div>
<div class="style2">item title value</div>
<div class="style2">item title value</div>
...

...但事实并非如此。有什么建议或更好的选择吗?

【问题讨论】:

  • 使用 {counter} 完成了这项工作,但我仍然想知道我在索引方面做错了什么。

标签: foreach indexing smarty


【解决方案1】:

你应该给你的 foreach 循环一个名字,这样你就可以引用迭代次数。

{foreach from=$items item=item name=itemList}
  {if $smarty.foreach.itemList.iteration < 3}
    <div class="style1">{$item->title}</div>
  {elseif $smarty.foreach.itemList.iteration >= 3}
    <div class="style2">{$item->title}</div>
  {/if}
{/foreach}

【讨论】:

  • 感谢您解释阿德里安,这正是我试图实现的目标!这种方式不需要{counter}。我将自己深入研究索引以更好地理解它。
  • 是的,这是一种方便的方法。因为那时你可以使用,.itemList.last & itemList.first 等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多