前不久得空将博客程序升级到了V3.2.9.518版,今天和一网友交换友情链接时发现友情链接的更多页面里所有友情链接都消失了,只剩下一个友情链接申请提交表单。
正好有点时间,于是分析了下程序和数据库,找到了问题的所在。
先看BlogLink.asp的51行:server.Execute("post/link.html"),查看post/link.html文件,发现内容为空,这是直接原因。
再看生成post/link.html文件的程序代码,是control/f_control.asp里的258行开始的这个Sub PostLink()。对应数据库表结构,可知这个代码是先读取友情链接分类,然后再按分类读取友情链接信息,然而我发现友情链接表里的分类ID都为0,也就是未分类,因此程序最终没有读取到任何信息。
解决办法有两个,一个就是去后台将所有的友情链接分类。这是最简单的方法。
还有一个办法就是修改程序,将未分类的友情链接也读取出来。之前一直未注意,不知道上一个版本有没有这样的问题,有的话也是类似的修改方法。附修改后的Sub PostLink()代码如下:
Sub PostLink()
Dim LoadTemplate, Temp, SaveArticle
Dim Link_SplitArray, Link_Global_Temp, Link_Layout_Temp, LinkClassTemp, LinkTemp, AllTemp
LoadTemplate = LoadFromFile("Template/Link.asp")
If LoadTemplate(0) = 0 Then '读取成功后写入信息
Temp = LoadTemplate(1)
Link_SplitArray = Split(Temp, "<#ST(B)#>")
Link_Global_Temp = Link_SplitArray(1)
Link_Layout_Temp = Link_SplitArray(2)
Dim blog_Links
Set blog_Links = conn.Execute("Select * From blog_LinkClass order by LinkClass_Order asc")
AllTemp = ""
Do Until blog_Links.EOF
LinkClassTemp = Link_Global_Temp
LinkTemp = Link_Layout_Temp
Dim LinkSingContent
LinkSingContent = GetLinkSingleHtml(LinkTemp, Trim(blog_Links("LinkClass_ID")), 3)
If Len(LinkSingContent) > 0 Then
LinkClassTemp = Replace(LinkClassTemp, "<$LinkClass_Name$>", Trim(blog_Links("LinkClass_Name")))
LinkClassTemp = Replace(LinkClassTemp, "<$LinkClass_Title$>", Trim(blog_Links("LinkClass_Title")))
LinkClassTemp = Replace(LinkClassTemp, "<$LoopLayout$>", LinkSingContent)
AllTemp = AllTemp & LinkClassTemp
End If
blog_Links.movenext
Loop
LinkClassTemp = Link_Global_Temp
LinkTemp = Link_Layout_Temp
LinkSingContent = GetLinkSingleHtml(LinkTemp, 0, 3)
If Len(LinkSingContent) > 0 Then
LinkClassTemp = Replace(LinkClassTemp, "<$LinkClass_Name$>", "其它")
LinkClassTemp = Replace(LinkClassTemp, "<$LinkClass_Title$>", "Orther")
LinkClassTemp = Replace(LinkClassTemp, "<$LoopLayout$>", LinkSingContent)
AllTemp = AllTemp & LinkClassTemp
End If
SaveArticle = SaveToFile(AllTemp, "post/link.html")
End If
End Sub