2012-04-27 110 views
0

我有這樣一個TPL文件foreach循環代碼:的Smarty的foreach:每次迭代添加

[{foreach from=$oView->getArticleList() item=actionproduct name=test_articleList}] 
[{include file="inc/product_alt.tpl" product=$actionproduct testid="action_"|cat:$actionproduct->oxarticles__oxid->value test_Cntr=$smarty.foreach.test_articleList.iteration}] 
[{/foreach}] 

在foreach循環中包含的文件product_alt.tpl包含一個簡單的div容器並獲得顯示每個產品。現在我正在尋找一種解決方案,爲每個第二個div容器添加一個額外的類。

我google了一下,發現(我認爲是這樣),我必須與偶數和奇數工作。但我想了解如何將這個完全應用於foreach循環,目標是每個secod div容器都獲得一個額外的類。

回答

2

您正在尋找cycle。你能舉例來說要做的就是在你的include語句,即得到由分配發生變化,像這樣指定一個額外的$class變量:

{cycle values='yourClass1,youClass2' assign='class'} 

這可能是您的奇/偶以爲來自:手冊上說

{cycle values='odd,even' assign='class'} 

但這些只是價值觀。 Anyeay,你的變量'class'現在將「yourClass1」和「yourClass2」(或奇數/偶數)作爲內容交替。如果您將此分配給您的包含,然後添加類似於

<div class="{$class}"> 

您會得到交替類。其中之一是你想要的。另一個可以是空的..

查看循環手冊:http://www.smarty.net/docsv2/en/language.function.cycle

+0

謝謝你。這聽起來很不錯。我下週試試,並給你一些反饋。 – Kuba 2012-04-28 00:26:10

+0

我現在就試過了,效果很好,但有一個小錯誤。它開始在第二個div上分配和循環類,而不是在第一個上。所以第一個div容器沒有得到任何額外的課程。 – Kuba 2012-05-02 08:43:23

+0

我真的不知道該怎麼做,你可能想要嘗試進行基本調試的唯一方法就是在一個小例子中(不包括例如include)執行此操作,直到獲得完美的結果,然後外推包含方法? – Nanne 2012-05-02 19:20:36