首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

KesionCMS SQL 標籤嵌套調用實現欄目文章雙層循環

     編輯:關於SqlServer

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_ 則再解析一次,實現兩層嵌套。為效能考量,僅在檢測到嵌套標記時才二次解析。

步驟二:建立內層「文章列表」SQL 標籤

  • 標籤名稱:文章循環體
  • 參數:欄目ID({$Param(0)})
  • SQL 語句:
    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]

步驟三:建立外層「欄目列表」SQL 標籤

  • 標籤名稱:循環欄目列表
  • SQL 語句:
    SELECT TOP 10 id, FolderName
    FROM ks_class
    WHERE tn = '{$CurrClassID}'
    ORDER BY folderOrder
  • 循環體(紅字處嵌套調用內層標籤):
    
    [loop=10]
    
    [/loop]
    
    {$Field(foldername,Text,0,...,0,)}
    {SQL_文章循環體({$Field(id,GetInfoUrl,100,2)})}

參數 {$Field(id,GetInfoUrl,100,2)} 取得當前欄目 ID 傳給內層標籤。

步驟四:模板頁面調用

{SQL_循環欄目列表()}

效果

輸出結構:
欄目 A → 其下最新 10 篇文章
欄目 B → 其下最新 10 篇文章
…

樣式完全由 HTML 控制,靈活度大幅提升。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved