%
Const IsReLoad = False '设为TRUE,强制更新
Const updatePeri = 12 '文档更新周期,单位小时
Const UrlSet = "http://www.baidu.com/search/bbs_sitemap.xsd" '文档名称空间
Const SaveCachePath = "data/"
Const MaxRows = 1000
Dim XmlDom
SetupXmlDoc()
ShowXml()
Dvbbs.PageEnd()
Sub ShowXml()
Response.Clear
Response.CharSet="gb2312"
Response.ContentType="text/xml"
Response.Write ""&vbNewLine
Response.Write ""&vbNewLine
Response.Write XmlDom.documentElement.xml
Set XmlDom = Nothing
End Sub
'
'
Sub SetupXmlDoc()
Dim Node
Dim UpTime
Set XmlDom = Dvbbs.CreateXmlDoc("msxml2.FreeThreadedDOMDocument"& MsxmlVersion)
If Not XmlDom.Load(Server.MapPath(MyDbPath &SaveCachePath&"sitemap_cache.xml")) Then
CreatXmlDoc()
LoadData()
SaveCache()
Else
Set Node = XmlDom.documentElement.selectSingleNode("updatetime")
If Node Is Nothing Then
CreatXmlDoc()
LoadData()
SaveCache()
Else
UpTime = cdate(Node.Text)
If Datediff("h",UpTime,Now())>updatePeri or IsReLoad Then
CreatXmlDoc()
LoadData()
SaveCache()
End If
End If
End If
End Sub
Sub SaveCache()
XmlDom.save Server.MapPath(MyDbPath &SaveCachePath&"sitemap_cache.xml")
End Sub
Sub CreatXmlDoc()
Dim Node
Dim ArrNode
'XmlDom.LoadXml("")
Dim pre
Set pre = XmlDom.createProcessingInstruction("xml", "version='1.0' encoding='gb2312'")
XmlDom.insertBefore pre, XmlDom.childNodes.item(0) 'createProcessingInstruction写在了最前面
XmlDom.documentElement = XmlDom.createElement("document")
Set Node = XmlDom.documentElement
Node.appendChild(XMLDom.createNode(1,"webSite","")).text=Dvbbs.Forum_Info(0) '"www.baidu.com"'
Node.appendChild(XMLDom.createNode(1,"webMaster","")).text=Dvbbs.Forum_Info(5) '"webmaster@baidu.com"
'Node.appendChild(XMLDom.createNode(1,"urlset","")).setAttribute "xmlns:bbs",UrlSet
Node.appendChild(XMLDom.createNode(1,"updatePeri","")).text=UpdatePeri
Node.appendChild(XMLDom.createNode(1,"version","")).text="Dvbbs Version "& FVersion
Node.appendChild(XMLDom.createNode(1,"updatetime","")).text=Now
Node.setAttribute "xmlns:bbs",UrlSet
End Sub
Sub LoadData()
Dim Node,i,Forum_Url,DispUrl
Dim TopicData
Dim SNode
TopicData = GetTopicList
Forum_Url = Dvbbs.Get_ScriptNameUrl
If Not IsArray(TopicData) Then
Exit Sub
End If
For i = 0 To Ubound(TopicData,2)
DispUrl = Forum_Url & "dispbbs.asp?boardID="&TopicData(2,i)&"&ID="&TopicData(0,i)
Set Node = XmlDom.documentElement.appendChild(XMLDom.createNode(1,"item",""))
Node.appendChild(XMLDom.createNode(1,"link","")).text = DispUrl
Node.appendChild(XMLDom.createNode(1,"title","")).text = TopicData(1,i)
Node.appendChild(XMLDom.createNode(1,"pubDate","")).text = TopicData(7,i)
Set SNode = XmlDom.createNode(1,"bbs:lastDate",UrlSet)
SNode.text = TopicData(12,i)
Node.appendChild(SNode)
Set SNode = XmlDom.createNode(1,"bbs:reply",UrlSet)
SNode.text = TopicData(4,i)
Node.appendChild(SNode)
Set SNode = XmlDom.createNode(1,"bbs:hit",UrlSet)
SNode.text = TopicData(8,i)
Node.appendChild(SNode)
Set SNode = XmlDom.createNode(1,"bbs:mainLen",UrlSet)
SNode.text = ""
Node.appendChild(SNode)
Set SNode = XmlDom.createNode(1,"bbs:boardid",UrlSet)
SNode.text = TopicData(2,i)
Node.appendChild(SNode)
Set SNode = XmlDom.createNode(1,"bbs:pick",UrlSet)
SNode.text = TopicData(15,i)
Node.appendChild(SNode)
Next
End Sub
Function GetTopicList()
GetTopicList = ""
Dim Rs,Sql 'TopicID=0,Title=1,Boardid=2,LockTopic=3,Child=4,PostUsername=5,PostUserid=6,DateAndTime=7,hits=8,Expression=9,VoteTotal=10,LastPost=11,LastPostTime=12,istop=13,isvote=14,isbest=15,HideName=16
Sql = "Select top "&MaxRows&" TopicID,Title,Boardid,LockTopic,Child,PostUsername,PostUserid,DateAndTime,hits,Expression,VoteTotal,LastPost ,LastPostTime,istop,isvote,isbest,HideName From Dv_Topic where Not Boardid in ("&LockBoards&") "
If IsSqlDataBase=1 Then
Sql = Sql & " and datediff(hour,LastPostTime,"&SqlNowString&")<"&updatePeri
Else
Sql = Sql & " and datediff('h',LastPostTime,"&SqlNowString&")<"&updatePeri
End If
Sql = Sql & " order by TopicID desc"
Set Rs = Dvbbs.Execute(Sql)
If Not Rs.Eof Then
GetTopicList = Rs.GetRows(-1)
End If
Rs.Close
Set Rs = Nothing
End Function
'限制访问的版块ID列表
Function LockBoards()
Dim Nodes,ChildNode
Dim BoardList,i
Set Nodes = Application(Dvbbs.CacheName&"_boardlist").documentElement.childNodes
i = 0
For Each ChildNode in Nodes
i = i+1
If ChildNode.getAttribute("checkout")="1" or ChildNode.getAttribute("hidden")=1 or ChildNode.getAttribute("checklock")=1 Then
BoardList = BoardList & ChildNode.getAttribute("boardid")
If i"" Then
BoardList = "444,777,"&BoardList
Else
BoardList= "444,777"
End If
If Right(BoardList,1)="," Then BoardList = Left(BoardList,Len(BoardList)-1)
LockBoards = BoardList
End Function
%>