网站调用BBSMAX论坛内容的办法〔申请加精〕
效果可参看我的网站
http://www.westerwind.cn右边一大半都是论坛内容。
网站用的是动易系统,我自己写程序调用论坛的存储过程,并且自己写了个系统标签放到动易的程序里,标签还带参数,可以设置调用哪个板块的贴子,调取多少条。做成标签就是为了随处可放。
另外在BBSMAX技术的帮助下,找到了跟主站做通行证的办法,目前加紧制作中,已经快要完成了。
具体程序等我整理出来在这里发布。先在这里叫一声看有没有人需要,大家共同研究。
下面是我加在我的动易CMS网站里的ASP函数,你也可以放在别的地方用,但这是针对我自己论坛做的,个别地方用的话自己要修改。
'=====================李青加的函数,调取论坛标题的函数=============
'函数名:GetBbsTitle
'作用: 调取BBSMAX论坛贴子
'参数: ForumDir --- 要调取贴子的版块的目录 (之所以用目录而不是版块的ID,是为了调用方便,不用再查ID了)
' Statu --- 1正常,2置顶,3总置顶,4待审核,5回收站
' Num --- 调取的数目
' Length --- 标题字符数 (这个参数是保留参数,暂时没用上)
'Statu -- 1正常,2置顶,3总置顶,4待审核,5回收站
Function GetBbsTitle(ForumDir,Statu,Num,Length)
Dim BBS_ConnStr,BBS_Conn,BBS_Temp,v,BBS_Str
BBS_ConnStr = "Provider = Sqloledb; User ID =XXX; Password =XXX; Initial Catalog =XXX; Data Source =(local);" '这是连接论坛数据库代码,自己要修改Set BBS_Conn = Server.CreateObject("ADODB.Connection")
BBS_Conn.open BBS_ConnStr
BBS_Temp = BBS_Conn.Execute("bbsMax_GetThreadsByStatus '"&ForumDirToId(ForumDir)&"','"&Statu&"',0,"&Num&",''").GetRows()
If IsArray(BBS_Temp) Then
BBS_Str = ""
For v = 0 To Ubound(BBS_Temp,2)
BBS_Str = BBS_Str & "<li><a target=_blank href=""
http://bbs.westerwind.cn/"&ForumDir&"/thread-"&BBS_Temp(0,v)&"-1-1.html"">" & BBS_Temp(5,v) & "</a></li>"
Next
Erase BBS_Temp
End If
Set BBS_Conn = Nothing
GetBbsTitle = BBS_Str
End Function
'函数名:ForumDirToId(ForumDir)
'作用: 把论坛版块目录转换成ID
'说明: 这是针对我自己论坛做的,使用了一些技巧,不具备通用性,你可以自己处理。
Function ForumDirToId(ForumDir)
Dim ForumArray,v
ForumArray = Split("qgsj,sgmw,qsaq,office,swcl,qgqs,zlyy,hyjt,sgmv,xlgb",",")
For v = 0 To Ubound(ForumArray)
If ForumArray(v) = Lcase(ForumDir) Then
ForumDirToId = v+1
End If
Next
Erase ForumArray
End Function
'===============================================================
下面这个是处理标签的函数,把模板里的标签替换成调取的结果
标签格式为:{$WW_ShowBbsTitle(论坛版块目录名,贴子类型,调取数量,标题字符串长度)}
'=========================李青加的替换论坛调用内容的标签============
'替换论坛标签
Dim StrBbsTitle
regEx.Pattern = "\{\$WW_ShowBbsTitle\((.*?)\)\}"
Set Matches = regEx.Execute(strHtml)
For Each Match In Matches
arrTemp = Split(Match.SubMatches(0), ",")
If UBound(arrTemp) <> 3 Then
StrBbsTitle = "函数式标签:{$WW_ShowBbsTitle(参数列表)}的参数个数不对。请检查模板中的此标签。"
Else
StrBbsTitle = GetBbsTitle(arrTemp(0),arrTemp(1),arrTemp(2),arrTemp(3))
End If
strHtml = Replace(strHtml, Match.Value, StrBbsTitle)
Next
'========================================================