顺便说明一下接下来的几句代码:
Dvbbs.Nav()
Dvbbs.ActiveOnline()
GetForumTextAd(0)
BoardList()
activeonline应该是统计和更新在线人数;getforumtextad是获取论坛上方文字广告;boardlist是显示论坛版面列表的(含文字广告、会员总数、日发帖等等)。
论坛顶部的BANNER应该是在Dvbbs.Nav()中显示的,继续找,在index.asp中找不到nav函数代码,后来发现所有关于dvbbs的子函数应该是在inc目录的Dv_ClsMain.asp中(动网组件的原因?),Nav也不例外,在Dv_ClsMain.asp中Nav()的定义很简单:
Public Sub Nav()
Head()
ShowTopTable()
IsTopTable = 1
End Sub
在ShowTopTable()中有
……
TempStr = Replace(TempStr,"{$top_ads}",Forum_ads(0)
……
Response.Write TempStr
……
猜测与BANNER有关,但是tempstr的内容来源不易检查,估计与数据库有关,打开数据库,在Dv_Setup表的Forum_ads字段中果然找到Banner数据,正准备写个ASP文件用在线修改的方法修改这个字段,后来一想,既然是Banner广告,应该在论坛后台提供有修改的方法?到后台一看,我晕,果然有很简单的修改banner代码的地方。我还费了半个小时舍近求远绕了个大圈子去一步一步找代码!
在后台修改了论坛顶布广告后,确实论坛能正确显示了,但是位置不对,不知道是什么原因,banner总是显示在论坛logo的下一行,仿佛是banner图象太长了在同一行放不下似的,但是其实应该是能放得下的。
把论坛网页html保存下来用frontpage打开看,发现是logo所在的div太宽了,比logo所需的宽度长,占用了顶部不少位置,所以banner显示不下,才被挤到第二行。只要设置一下logo所在的div的宽度就行了。但是这个宽度在哪里设置又需要找,还是回到Dv_ClsMain.asp中的ShowTopTable(),既然
TempStr = Replace(TempStr,"{$top_ads}",Forum_ads(0)
这句是把顶部banner标记换成实际的banner代码,那么tempstr中一定有这个banner的div,于是追查tempstr数据的来源,跟mainhtml(4)字符串有关系,继续追查mainhtml字符串,其数据来源于Main_Style(0)的值,继续查,找到
main_Style = Replace(Application(CacheName &"_style").documentElement.selectSingleNode("style[@id='"& SkinID &"']/@main_style").text,"{$PicUrl}",Forum_PicUrl) '风格图片路径替换
没法查了,这就是源头了,可惜看不懂,大约是动网组件的原因?但是知道跟style有关系了。打开数据库,用“
<div )
把修改后的Dv_ClsMain.asp传的论坛里的inc目录下覆盖原文件,OK,论坛banner显示正常了。
……看别人的程序代码是个辛苦的过程,花了我一个晚上的两个多小时找自己需要的部分代码,但是也能从看代码中学会些东西,例如这个替换html字串的思路,是个不错的办法。即使论坛后台数据错误无法修改,依然可以读出错误数据后通过asp修改代码,把正确的HTML内容呈现给用户。
另外,在Dv_ClsMain.asp中还可以找到loadSetup函数,它是用来取得论坛基本设置数据的。