官方首页 | 无图版 | BBS首页
PJBlog3 3.0.6.170 新版发布 下载|升级(2008.12.25) 庆圣诞+2009元旦+新春-PJ模板征集活动开始啦! 2008版 PJHOME 珍藏/纪念版官方T恤 正式发布! PJ3内测团队主创人员身份,性格,特点吐血大曝光
PJBlog技术支持论坛使用问题总索引 PJBLOG 3 的心路历程 感谢有你 【独家】我使用过的三种空间,与客服的精彩故事 Z-Blog,Wordpress,Bo-Blog转换到PJBlog
腊月的白菜-都辛苦了!祝PJ所有成员和用户的新年快乐! 苦咖啡个人BLOG-祝PJ越来越好 pjblog3资源收集-PJ加油 Feln's Blog-你们辛苦了啊 ~~
听雨轩-继续努力。。期待着PJ4的在线安装插件 cludechn's blog-加油,以后能有更好的版本推出 移动3G-3G改变生活 爱之音-希望PJ3最终版能加入附件批量上传的功能哈
发新话题
打印

长日志分页——解决页面跑版的问题(12/17修改)

长日志分页——解决页面跑版的问题(12/17修改)

长日志分页有利于加快页面的加载速度,同时也会提高网站PV值。但因对于ASP语法比较生疏,一直没有动手,到官方论坛找到一个,可惜用起来很不爽,使用该方法后日志页面跑版厉害,侧边栏、页脚经常错位。而且论坛里也有很多人反映这个问题,但无人解决。
没办法,还是得自力更生,搜索引擎真是个好东东,所有的语法都可以马上找到详细说明,经过昨晚二个多小时的奋战,总算解决了跑版的问题。
关键就在于不能将分页符插在 HTML 语法标签对内部,这样会导致分页后语法标签不能成对匹配,首/尾标签就和日志正文以外的标签匹配了,打乱了其它部分正常语法(很多脚本 hacker 就是巧妙地打断语法标签插入代码再补全首尾标签来实现特殊目的的)。
那为什么有些人使用该方法没有问题呢?一个原因是是用了UBB编辑器,UBB编辑器中的标签对比较明显,另一个是使用FCK编辑器份但没有用源代码方式编辑,这两种情况都不大会将分页符插到语法标签对的中间。

知道了原因,实现起来就比较简单,只要补全前后的语法标签就行了。
由于 cls_article.asp 这个文件是修改得比较多的地方,导致 ShowArticle 函数越来越长,不利于维护,将它们做成了两个子函数分别对应 UBB 和 FCK 两处模式,结构清楚点。

本方法解决了版面错乱的问题、修正分页后只有第一而显示评论的BUG、提供分页和非分页两种阅读方式,同时支持UBB和FCK编辑器

FCK 分页效果
UBB 分页效果


修改方法及代码下载:
12/17修改:(为当前页面号不可点)

详细:http://www.tuxw.cn/blog/article.asp?id=129


<%
'*******************************************
'  UBB 日志分页
'  修改时间:2007年12月17日
'*******************************************
Sub UBBSplitxx(sUrl)
    dim arrContent,Page,PageList,Content,PageCounter,x,xx,uu
    Content=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)
    If InStr(1,cstr(Content),"__page_break__",1)<>0 Then
        ArrContent=Split(Content,"__page_break__")
        PageCounter=UBound(ArrContent)
        If PageCounter > 0 Then
            Page=Request.QueryString("pages")
            Page=CInt(Page)
            If Page<1 Then Page=1
            If Page-2>PageCounter Then Page=PageCounter+2
            For x=1 To PageCounter+1
                uu=sUrl & "&pages=" & x
                If Page=x Then
     xx=" [<font color='#FF0000'>" & x & "</font>]"
     PageList = PageList &  xx
    Else
     xx= x
     PageList = PageList & " [<a href='" & uu & "'>" & xx & "</a>]"
    End If
            Next
            uu = sUrl & "&pages=" & x
            If Page=PageCounter + 2 Then
    xx = " [<font color='#FF0000'>全文阅读</font>]"
    PageList = PageList & xx
   Else
    xx = "全文阅读"
    PageList = PageList & " [<a href='" & uu & "'>" & xx & "</a>]"
   End If
            If Page-1<=PageCounter Then
                Content=ArrContent(Page-1)
            End If
            x = PageCounter + 1
            Content=Content & "<hr><div align='right'>共 " & x & " 页:" & PageList & "</div>"
        End If
    End If
    response.write (content)
End Sub%>
<%
'*******************************************
'  FCK 日志分页
'  修改时间:2007年12月17日
'*******************************************
Sub FCKSplitxx(sUrl)
    dim arrContent,Page,PageList,Content,PageCounter,x,xx,uu
    Content=highlight(UnCheckStr(log_ViewArr(8,0)),keyword)
    If InStr(1,cstr(Content),"__page_break__",1)<>0 Then
        ArrContent=Split(content,"__page_break__")
        PageCounter=UBound(ArrContent)
        If PageCounter > 0 Then
            Page=Request.QueryString("pages")
            Page=CInt(Page)
            If Page<1 Then Page=1
            If Page-2>PageCounter Then Page=PageCounter+2
            For x=1 To PageCounter+1
                uu=sUrl & "&pages=" & x
                If Page=x Then
     xx=" [<font color='#FF0000'>" & x & "</font>]"
     PageList = PageList &  xx
    Else
     xx= x
     PageList = PageList & " [<a href='" & uu & "'>" & xx & "</a>]"
    End If
            Next
            uu = sUrl & "&pages=" & x
            If Page=PageCounter + 2 Then
    xx = " [<font color='#FF0000'>全文阅读</font>]"
    PageList = PageList & xx
   Else
    xx = "全文阅读"
    PageList = PageList & " [<a href='" & uu & "'>" & xx & "</a>]"
   End If
            If Page-1<=PageCounter Then
                Content=ArrContent(Page-1)
                If Page=1 Then Content=Content & "</div>"
                If Page-1=PageCounter Then C & Content
                If Page>1 And Page<=PageCounter Then C & Content & "</div>"
            End If
            x = PageCounter + 1
            Content=Content & "<hr><div align='right'>共 " & x & " 页:" & PageList & "</div>"
        End If
    End If
    response.write(Content)
End Sub%>

[ 本帖最后由 tuxw 于 2007-12-17 11:03 编辑 ]
附件: 您所在的用户组无法下载或查看附件
www.tuxw.cn

TOP

沙发支持,试下效果先

TOP

我帮转过来了,免得大家都那么麻烦--

修改方法:
打开 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%>

就是将原来的两条语句注释掉(也可以直接删除),换成两个子函数调用。

三、在文件尾部添加下面两个子函数(请注意看子程序中的注释)
 代码不包含了分页符,不能贴在这里
  点击下载此文件

以上转自http://www.tuxw.cn/blog/article.asp?id=129

TOP

试下效果先.感谢啦!!

TOP

不错的效果
『沙之轩』cosh's blog
诚招建博半年以上友情连接

TOP

强烈请求楼主做一个静态模式下的!!!!

TOP

我都弄好了..


但是效果没出来哦..

是要在编辑文章时插入什么字串啊?__page_break__么?

TOP

想法不错。

TOP

测试过没有效果。

TOP

没有效果有朋友请检查是否使用了静态日志,这个是针对动态日志的,静态的暂时还没弄
www.tuxw.cn

TOP

发新话题