在 Destoon 開發過程中,經常需要在列表頁顯示排名數字(如熱門文章排行榜),預設的循環變數通常從 0 開始,這不符合直觀的排序習慣。本文詳細介紹如何通過簡單的模板標籤技巧,實現自增數字從 1 開始輸出,提升前端展示的專業度。
Destoon 的模板引擎支持在循環中使用 PHP 代碼片段。關鍵在於利用 {loop} 標籤提供的 $k 索引變數,通過前置遞增操作(++$k)將基於 0 的索引轉為基於 1 的序號。具體做法是在循環體內部插入一行 PHP 賦值語句,即可無縫對接現有模板結構。
<!--{php $tags=tag("moduleid=14&length=46&condition=status=3&pagesize=10&order=hits desc&template=null");}-->
{loop $tags $k $t}
<li>
{php $k = ++$k;}
<a href="{$t[linkurl]}" rel="external nofollow" target="_blank" class="item">
<span class="num">{$t[hits]}</span>
<i class="icon icon2">{$k++}</i>
<span class="txt f-ib f-thide">{$t[title]}</span>
</a>
</li>
{/loop}
{php $k = ++$k;} 先將索引加 1 並賦值回 $k,隨後模板輸出 {$k++} 時使用的是已遞增的值,並再次遞增供下一次循環(雖然此處第二次遞增實際無影響,因循環會重置 $k)。moduleid=14 指定調用模塊,condition=status=3 篩選通過審核的內容,order=hits desc 按點擊量降序排列,pagesize=10 限制輸出 10 條。num 顯示點擊量,icon icon2 渲染排名圖標,txt f-ib f-thide 控制標題溢出隱藏。此方法同樣適用於最新發布、推薦列表、評論排行等所有需要序號的場景。只需調整 tag() 函數的 SQL 條件參數,即可復用同一套邏輯。對於需要「前三名高亮」的設計,可結合 if $k<=3 判斷添加專用 CSS 類,進一步豐富視覺層次。
若發現序號重複或跳號,請檢查是否在循環外部修改了 $k,或模板中存在嵌套循環導致變數衝突。建議在循環開始前用 {php $k=0;} 顯式初始化,確保狀態乾淨。