动网论坛顶部BANNER广告代码修改方法

在index.asp里找不到顶部BANNER广告代码数据,用临时删除部分代码后查看显示结果的方法,一步一步地检查,可以找到显示banner的代码。后来找到index.asp里的Sub Main()函数,里面的Dvbbs.Nav()函数是用来显示论坛顶部的。

顺便说明一下接下来的几句代码:


  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 id="topbar_mid_m">{$top_ads}</div>
”搜索(这是banner在html文件中的代码,其中的{$top_ads}会被换成BANNER代码),果然,在Dv_Style表中的Main_Style字段里找到一大堆代码,看起来好象是整个论坛的页面的基本样式代码,在显示前只需要把其中用{}包含的内容换成论坛设置里的内容就能成为完整的html了。

因此,我只需要将其中的“<div id="topbar_mid_l">”修改成“<div id="topbar_mid_l" style="width: 188px; height: 63px">”,来限制logo图象所在的div的宽度就能正常显示banner了。下载数据库来修改比较麻烦,文件有500多M,下载上传很容易出问题;用ASP程序在线修改数据库中这个字段的内容也不太可行,因为这个字段中的内容太多,几乎就是整个论坛页面的所有html代码,其中用了大量的"、'、(、)、/等特殊符号,用SQL语句修改字段很麻烦。于是想到学习ShowTopTable()函数的方法,它不是用

TempStr = Replace(TempStr,"{$top_ads}",Forum_ads(0)

这句来把真实的banner代码替换临时代码吗?我也可以替换呀,就在Dv_ClsMain.asp的1218行增加了一句代码:


TempStr = Replace(TempStr,"<div id=""topbar_mid_l"">","<div id=""topbar_mid_l"" style=""width: 188px; height: 63px"">")
把修改后的Dv_ClsMain.asp传的论坛里的inc目录下覆盖原文件,OK,论坛banner显示正常了。

……看别人的程序代码是个辛苦的过程,花了我一个晚上的两个多小时找自己需要的部分代码,但是也能从看代码中学会些东西,例如这个替换html字串的思路,是个不错的办法。即使论坛后台数据错误无法修改,依然可以读出错误数据后通过asp修改代码,把正确的HTML内容呈现给用户。

另外,在Dv_ClsMain.asp中还可以找到loadSetup函数,它是用来取得论坛基本设置数据的。
posted @ 2006-10-10 00:03  MaxIE  阅读(6384)  评论(5编辑  收藏  举报