KesionCMS(科汛系統)預設的「循環顯示欄目文章」標籤樣式固定、難以自訂。利用 SQL 標籤嵌套調用 可靈活控制輸出結構。預設 SQL 標籤不支援嵌套,需修改核心類別啟用。
編輯 KS_Cls/Kesion.Label.CommonCls.ASP,約第 112 行:
' 原始碼
Dim DCls : Set Dcls = New DIYCls
Content = DCls.ReplaceUserFunctionLabel(Content)
Set DCls = Nothing
ReplaceAllLabel = Content
' 修改為
Dim DCls : Set Dcls = New DIYCls
Content = DCls.ReplaceUserFunctionLabel(Content)
' 判斷模板是否包含嵌套 SQL 標籤 {SQL_ ,若有則再解析一次
If InStr(Content, "{SQL_") > 0 Then
Content = DCls.ReplaceUserFunctionLabel(Content)
End If
Set DCls = Nothing
ReplaceAllLabel = Content
原理:第一次解析外層標籤,若結果仍含 {SQL_ 則再解析一次,實現兩層嵌套。為效能考量,僅在檢測到嵌套標記時才二次解析。
{$Param(0)})SELECT TOP 10 id, title, adddate
FROM ks_article
WHERE tid = '{$Param(0)}'
ORDER BY id DESC
[loop=10]
- {$Field(title,Text,0,...,0,)}
[/loop]
SELECT TOP 10 id, FolderName
FROM ks_class
WHERE tn = '{$CurrClassID}'
ORDER BY folderOrder
[loop=10]
{$Field(foldername,Text,0,...,0,)}
{SQL_文章循環體({$Field(id,GetInfoUrl,100,2)})}
[/loop]
參數 {$Field(id,GetInfoUrl,100,2)} 取得當前欄目 ID 傳給內層標籤。
{SQL_循環欄目列表()}
輸出結構:
欄目 A → 其下最新 10 篇文章
欄目 B → 其下最新 10 篇文章
…
樣式完全由 HTML 控制,靈活度大幅提升。