section的產生是爲解決foreach的不足的,與foreach同樣,它用於設計模板內的循環塊,它較爲複雜,可極大程序上知足程序須要,因此在程序中我習慣使用它而不使用foreach,基本原形爲:
{section name = name loop = $varName[, start = $start, step = $step, max = $max, show = true]}
name: section的名稱,不用加$
$loop: 要循環的變量,在程序中要使用assign對這個變量進行操做。
$start: 開始循環的下標,循環下標默認由0開始
$step: 每次循環時下標的增數
$max: 最大循環下標
$show: boolean類型,決定是否對這個塊進行顯示,默認爲true
這裏有個名詞須要說明:
循環下標:實際它的英文名稱爲index,是索引的意思,這裏我將它譯成"下標",主要是爲了好理解。它表示在顯示這個循環塊時當前的循環索引,默認從 0開始,受$start的影響,若是將$start設爲5,它也將從5開始計數,在模板設計部分咱們使用過它,這是當前 {section}的一個屬性,調用方式爲Smarty.section.sectionName.index,這裏的sectionName指的是函數原型中的name屬性。
{section}塊具備的屬性值,分別爲:
1. index: 上邊咱們介紹的"循環下標",默認爲0
2. index_prev: 當前下標的前一個值,默認爲-1
3. index_next: 當前下標的下一個值,默認爲1
4. first: 是否爲第一下循環
5. last: 是否爲最後一個循環
6. iteration: 循環次數
7. rownum: 當前的行號,iteration的另外一個別名
8. loop: 最後一個循環號,可用在section塊後統計section的循環次數
9. total: 循環次數,可用在section塊後統計循環次數
10. show: 在函數的聲明中有它,用於判斷section是否顯示函數
以ECSHOP爲例oop
{foreach from=$arr item=arr name=arr} <li><span class="icon {if $smarty.foreach.arr.first}on{/if}"></span> <span>{$arr.context}</span><span>{$arr.time}</span> </li> {/foreach}