用過科汛系統(tǒng)函數(shù)標(biāo)簽的"循環(huán)顯示欄目文章標(biāo)簽"的用戶可能就知道這個標(biāo)簽有一定的局限性,樣式無法自己控制.往往無法滿足自己的需求.現(xiàn)在我就教大家用sql標(biāo)簽來實現(xiàn)類似效果的制作方法
正如標(biāo)題所說需要sql標(biāo)簽嵌套調(diào)用,但考慮到系統(tǒng)生成速度方面原因,默認(rèn)情況下科汛的sql標(biāo)簽是不支持嵌套調(diào)用的,那我們就對科汛的代碼進(jìn)行小手術(shù).請跟我來吧
第一步:對代碼進(jìn)行小手術(shù)
用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)
相信有點(diǎn)asp代碼基礎(chǔ)的用戶都可以看得明白,就是當(dāng)模板文件里包括{SQL_開頭時,就再一次執(zhí)行sql標(biāo)簽替換操作.正如之前說的,考慮到生成速度方面原因.如果模板里不包含{SQL_就不再替換了,所以這里的If判斷對系統(tǒng)的性能有一定的作用.因為我們并不要求所有標(biāo)簽都要嵌套的.
第二步:分析實現(xiàn)
制作被嵌套的文章列表(查詢KS_Article表):
sql標(biāo)簽名稱:文章循環(huán)體
sql參數(shù): 欄目ID
sql語句:select top 10 id,title,adddate from ks_article where tid='{$Param(0)}' order by id desc
sql循環(huán)體:
[loop=10]
制作欄目列表標(biāo)簽(查詢KS_Class欄目表)
sql標(biāo)簽名稱:循環(huán)欄目列表
sql語句:select top 10 id,FolderName from ks_class where tn='{$CurrClassID}' order by folderOrder
sql循環(huán)體:
[loop=10]
[/loop]
{$Field(foldername,Text,0,...,0,)} |
{SQL_文章循環(huán)體({$Field(id,GetInfoUrl,100,2)})} |
tips:上面紅色就是插入上面制作的文章列表標(biāo)簽,參數(shù){$Field(id,GetInfoUrl,100,2)}表示生成欄目ID號
第三步:模板調(diào)用
{SQL_循環(huán)欄目列表()}