用過科汛系統函數標簽的"循環顯示欄目文章標簽"的用戶可能就知道這個標簽有一定的局限性,樣式無法自己控制.往往無法滿足自己的需求.現在我就教大家用sql標簽來實現類似效果的制作方法
正如標題所說需要sql標簽嵌套調用,但考慮到系統生成速度方面原因,默認情況下科汛的sql標簽是不支持嵌套調用的,那我們就對科汛的代碼進行小手術.請跟我來吧
第一步:對代碼進行小手術
用dw等編輯工具打開KS_Cls/Kesion.Label.CommonCls.asp文件,并找到約112左右的如下代碼
Dim DCls:Set Dcls=New DIYCls
Content=DCls.ReplaceUserFunctionLabel(Content)
Set DCls=nothing
ReplaceAllLabel =Content
ReplaceAllLabel=DCls.ReplaceUserFunctionLabel(Content)
我們改成以下代碼
Dim DCls:Set Dcls=New DIYCls
Content=DCls.ReplaceUserFunctionLabel(Content)
相信有點asp代碼基礎的用戶都可以看得明白,就是當模板文件里包括{SQL_開頭時,就再一次執行sql標簽替換操作.正如之前說的,考慮到生成速度方面原因.如果模板里不包含{SQL_就不再替換了,所以這里的If判斷對系統的性能有一定的作用.因為我們并不要求所有標簽都要嵌套的.
第二步:分析實現
制作被嵌套的文章列表(查詢KS_Article表):
sql標簽名稱:文章循環體
sql參數: 欄目ID
sql語句:select top 10 id,title,adddate from ks_article where tid='{$Param(0)}' order by id desc
sql循環體:
[loop=10]
制作欄目列表標簽(查詢KS_Class欄目表)
sql標簽名稱:循環欄目列表
sql語句:select top 10 id,FolderName from ks_class where tn='{$CurrClassID}' order by folderOrder
sql循環體:
[loop=10]
[/loop]
{$Field(foldername,Text,0,...,0,)} |
{SQL_文章循環體({$Field(id,GetInfoUrl,100,2)})} |
tips:上面紅色就是插入上面制作的文章列表標簽,參數{$Field(id,GetInfoUrl,100,2)}表示生成欄目ID號
第三步:模板調用
{SQL_循環欄目列表()}