一段時間沒有給大家講高級教程了,今天剛好商業區的管理員說有用戶需要這方面的需求,問我如何實現!其實也不難.我就給大家做個教程吧!
用過科汛系統函數標簽的"循環顯示欄目文章標簽"的用戶可能就知道這個標簽有一定的局限性,樣式無法自己控制.往往無法滿足自己的需求.現在我就教大家用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]
<li><a href="{$Field(id,GetInfoUrl,1,1)}" target="_blank">{$FIEld(title,Text,0,...,0,)}</a></li>
[/loop]
制作欄目列表標簽(查詢KS_Class欄目表)
sql標簽名稱:循環欄目列表
sql語句:select top 10 id,FolderName from ks_class where tn='{$CurrClassID}' order by folderOrder
sql循環體:
<table border="0" width="100%">
[loop=10]
<tr>
<td>{$FIEld(foldername,Text,0,...,0,)}</td>
</tr>
<tr>
<td sytle="border:1px solid #cccccc">
{SQL_文章循環體({$FIEld(id,GetInfoUrl,100,2)})}
</td>
</tr>
[/loop]
</table>
tips:上面紅色就是插入上面制作的文章列表標簽,參數{$FIEld(id,GetInfoUrl,100,2)}表示生成欄目ID號
第三步:模板調用
{SQL_循環欄目列表()}