smarty section 使用方法

轉載鏈接 http://blog.163.com/ymboy@126/blog/static/287110842010830113131777/

 {section name=loop loop=$News step=1} 

      {if $smarty.section.loop.index % 4 == 0}

        </tr>

        <tr>

      {/if}

    <td>{$News[loop].newsID}</td>

    <td>{$News[loop].newsTitle}</td>

     {/section}

   {section}{/section}指的是一個循環部分,在下一節會有詳細的介紹,我們主要來看看這一句:

     {if $smarty.section.loop.index % 4 == 0}

   $smarty.section.loop指出$smarty的實例中的section段有一個叫loop的部分, 它有一個屬性叫index, 它的表示當前循環的索引值,

   從0開始遞增, 我們把它%4後與0相比較,也就是說,如果當前的索引值是4的倍數,它就輸出一個</tr><tr>,否則執行下面的部分,

   很簡單的就解決了一個在程序上實現起來很麻煩的事情.

2. section:
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是否顯示

它們的具體屬性大家可以參考手冊,在程序中可靈活使用它的這些屬性,模板部分我就使用過index屬性,大家可以回過頭去看看。

同樣,{section}也可以配合使用{sectionelse},用來表示傳入的數組變量爲空時對模板進行的處理。

我們把上邊的那個例子使用{section}來替代{foreach}來實現現樣的功能,注意,在這個例子中我只將tpl模板中的{foreach}用

{section}來實現,php程序文件中沒有任何改動,同時加了{sectionelse}處理塊:

===========================================
example7.tpl
===========================================
<html>
<head><title>這是一個foreach使用的例子</title></head>
<body>
這裏將輸出一個數組:<br>
{section name=loop loop=$News}
新聞編號:{$News[loop].newsID}<br>
新聞標題:{$News[loop].newsTitle}<br><hr>
{sectionelse}
對不起,沒有任何新聞輸入!
{/section}
</body>
</html>

正則使用:

{* 使用空格替換每個回車,tab,和換行符 *}
{$articleTitle}
{$articleTitleregex_replace:"/[\r\t\n]/":" "}


格式化字符串:

{textformat wrap=40 indent=4}


日期比較例子: <td><{if $smarty.nowdate_format:"%Y-%m-%d" eq   $MMSPAN[4]date_format:"%Y-%m-%d"}>
<img src="http://www.webjx.com/htmldata/2007-09-17/images/newh.gif" />
<{/if}></td>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章