此方法只适用于动态模式..
长日志分页有利于加快页面的加载速度,同时也会提高网站PV值。但因对于ASP语法比较生疏,一直没有动手,到官方论坛找到一个,可惜用起来很不爽,使用该方法后日志页面跑版厉害,侧边栏、页脚经常错位。而且论坛里也有很多人反映这个问题,但无人解决。
没办法,还是得自力更生,搜索引擎真是个好东东,所有的语法都可以马上找到详细说明,经过昨晚二个多小时的奋战,总算解决了跑版的问题。
关键就在于不能将分页符插在 HTML 语法标签对内部,这样会导致分页后语法标签不能成对匹配,首/尾标签就和日志正文以外的标签匹配了,打乱了其它部分正常语法(很多脚本 hacker 就是巧妙地打断语法标签插入代码再补全首尾标签来实现特殊目的的)。
那为什么有些人使用该方法没有问题呢?一个原因是是用了UBB编辑器,UBB编辑器中的标签对比较明显,另一个是使用FCK编辑器份但没有用源代码方式编辑,这两种情况都不大会将分页符插到语法标签对的中间。
知道了原因,实现起来就比较简单,只要补全前后的语法标签就行了。
由于 cls_article.asp 这个文件是修改得比较多的地方,导致 ShowArticle 函数越来越长,不利于维护,将它们做成了子函数,结构清楚点。
本方法解决了版面错乱的问题、修正分页后只有第一页显示评论的BUG、提供分页和非分页两种阅读方式,同时支持UBB和FCK编辑器。
1 2 3
使用方法:
由于UBB编辑器可能会过滤“[]”,所以将分页符换成了 __page&break__ ,你也可按自己的喜好替换。(为了不让这个说明导致这里分页,我将中间的下划线找成了“&”符号)
①UBB 编辑模式语法标签可以直接看到,只要不在标签对中间插分页符就行了②FCK 编辑器要用回车(注意不是Shift+回车)另起一段,将分页符 放在单独一个段落内,这样做是为了保证分页符一定会被一个段落标签对(<p>或<div>)包围,后面补全标签时才是有规律的。
修改方法:
打开 cls_article.asp
一、找到 sub ShowArticle(LogID),30 行左右,在下面加入:
'得到页面链接
Dim sUrl, ArrUrl
sUrl = "http://" & Request.ServerVariables("HTTP_HOST") & Request.ServerVariables("PATH_INFO") & "?" & Request.ServerVariables("QUERY_STRING")
If InStr(1,sUrl,"&",1) Then
ArrUrl=Split(sUrl, "&")
sUrl=ArrUrl(0)
End If
这段代码取得当前日志的链接,并滤掉后面的 &pages=x 参数,保存到 sUrl 变量
二、查找:
if log_ViewArr(10,0)=1 Then
response.write (highlight(UnCheckStr(UBBCode(HtmlEncode(log_ViewArr(8,0)),mid(log_ViewArr(11,0),1,1),mid(log_ViewArr(11,0),2,1),mid(log_ViewArr(11,0),3,1),mid(log_ViewArr(11,0),4,1),mid(log_ViewArr(11,0),5,1))),keyword))
Else
response.write(highlight(UnCheckStr(log_ViewArr(8,0)),keyword))
end if%>
修改为:
if log_ViewArr(10,0)=1 Then
'response.write (highlight(UnCheckStr(UBBCode(HtmlEncode(log_ViewArr(8,0)),mid(log_ViewArr(11,0),1,1),mid(log_ViewArr(11,0),2,1),mid(log_ViewArr(11,0),3,1),mid(log_ViewArr(11,0),4,1),mid(log_ViewArr(11,0),5,1))),keyword))
Call UBBSplitxx(sUrl)
Else
'response.write(highlight(UnCheckStr(log_ViewArr(8,0)),keyword))
Call FckSplitxx(sUrl)
end if%>
就是将原来的两条语句注释掉(也可以直接删除),换成两个子函数调用。
三、在文件尾部添加下面两个子函数(请注意看子程序中的注释)
代码中包含了分页符,不能贴在这里

点击下载此文件











