让你的博客也可以实现日志的内部分页:由于PJBLOG本身日志编辑时不具备日志内分页功能,当我们有比较长的文章,从头看到脚的感觉真的是难受。针对此问题的一个实现单篇日志也能分页的功能。另外也可以有效增加一定的PV量。
修改代码时注意:由于受到日志内分页符作用的原因,本篇文章在修改代码中不使用具体日志内分页代码,而以文字“日志内分页代码”来代替,请大家在修改代码时记得修改成自己需要的日志内分页代码,我们教程修改时日志内分页符号一率使用的是:方括号内pagesplitxx
第一种修改方法:
PJBLOG带有两个编辑器,日志内分页修改时需要先在FCK编辑模式修改,来实现FCK模式下的日志内分页。如果要实现UBB编辑器模式日志内分页,还需要在FCK模式修改的基础上再对UBB相关文件做一些修改。相关的文件在此之前如果没有做过改动,可以下载文件直接覆盖,如果已经做过改动,只能手动查找代码并修改。修改好的文件以及具体的修改代码说明教程已经打在压缩包里了。效果见本站长篇的分页文章。免费下载地址:http://www.box.net/shared/dcihk6c8t8
class目录下的cls_article.asp文件中原来的第120行代码:
response.write (highlight(UnCheckStr(log_ViewArr(8,0)),keyword))
改写为:
'=======FCK内分页程序============
'dim arrcontent,page,pagelist,content,pagecounter,x,xx
content=highlight(UnCheckStr(log_ViewArr(8,0)),keyword)
If InStr(1,cstr(content),"日志内分页代码",1)<>0 Then
ArrContent=Split(content,"日志内分页代码")
PageCounter=UBound(ArrContent)
Page=Request.QueryString("Page")
If isnumeric(Page)=false Then Page=1
If Page<1 Then Page=1
If Page-1>PageCounter Then Page=1
For x=1 To PageCounter+1
xx=x
If CInt(Page)=x Then xx="<font style='color:red;font-weight:bold'>"&x&"</font>"
PageList=PageList&" "&"<a href='?id="&logID&"&Page="&x&"'>["&xx&"]</a>"
Next
content=ArrContent(Page-1)&"<hr><div align='center' style='font-size:12px'>"&pagelist&"</div>"
End If
'=======FCK内分页程序结束========
response.write (content)
打开 fckeditoreditorjs目录下的fckeditorcode_gecko.js和fckeditorcode_ie.js这两个文件:
查找如下代码:
<span style="DISPLAY:none"> </span>
替换成你的“日志内分页代码”代码即可。
关于UBB编辑器中实现内分页的修改:
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))
替换成
'=======UBB模式内分页程序============
dim arrcontent,page,pagelist,content,pagecounter,x,xx
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),"日志内分页代码",1)<>0 Then
ArrContent=Split(content,"日志内分页代码")
PageCounter=UBound(ArrContent)
Page=Request.QueryString("Page")
If isnumeric(Page)=false Then Page=1
If Page<1 Then Page=1
If Page-1>PageCounter Then Page=1
For x=1 To PageCounter+1
xx=x
If CInt(Page)=x Then xx="<font style='color:red;font-weight:bold'>"&x&"</font>"
PageList=PageList&" "&"<a href='?id="&logID&"&Page="&x&"'>["&xx&"]</a>"
Next
content=ArrContent(Page-1)&"<hr><div align='center' style='font-size:12px'>"&pagelist&"</div>"
End If
'=======内分页程序结束========
response.write (content)
打开common/ubbcode_Gecko.js 和Ubbcode_ie.js
function UBB_pagesplitxx(){
if (EditMethod=="normal")
{
AddText("日志内分页代码")
}
if (EditMethod=="expert")
{
AddText("日志内分页代码")
}
}
打开common/ubbconfig.asp 找到
"link,mail,image,insertunorderedlist,quote,hidden,code,html"
替换修改成:
"link,mail,image,insertunorderedlist,quote,hidden,code,html,pagesplitxx"
找到:
function Tip(str)
Select Case str
在下面添加代码:
case "pagesplitxx":
Tip="插入分页符"
FCK图片目录中裁剪了个分页标签图,起名叫 pagesplitxx.gif 放入 ubb/icons 目录下即可!
FCK编辑器及UBB编辑器模式下的日志内分页全部修改结束。使用的方法是:在编辑的时候,在需要分页的地方点击编辑器按钮栏上的分页图标,即可自动插入分页符号代码。当然如果你不使用这个按钮,在需要分页的地方手动写入分页代码也可以。我们教程修改时使用的分页代码是:方括号内pagesplitxx
如果不成功请按以下步骤检查:
1、请试试将IE的临时文件夹和历史记录都清除一下,在IE的工具里。可能是IE仍然调用缓存中的FCK的js文件导致的。清空以后记得关闭所有IE窗口(或者你的maxthon、firefox),然后再打开测试一下。
2、如果后台基本设置中勾选了“静态日志模式”的话也有可能导致出错!因为日志内分而功能是针对动态模式的。
第二种修改方法:
长日志分页——解决页面跑版的问题
本方法解决了以前的分页方法版面错乱的问题、修正分页后只有第一而显示评论的BUG、提供分页和非分页两种阅读方式,同时支持UBB和FCK编辑器。
修改代码时注意:由于受到日志内分页符作用的原因,本篇文章在修改代码中不使用具体日志内分页代码,而以文字“日志内分页代码”来代替,请大家在修改代码时记得修改成自己需要的日志内分页代码,我们教程修改时日志内分页符号一率使用的是:方括号内pagesplitxx
一、打开 cls_article.asp
找到 sub ShowArticle(LogID),在下面加入如下代码:这段代码取得当前日志的链接,并滤掉后面的 &pages=x 参数
'得到页面链接
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
二、查找:
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%>
就是将原来的两条语句注释掉(也可以直接删除),换成两个子函数调用。
三、在这个文件的最后添加下面两个子函数
<%
'*******************************************
' 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),"日志内分页代码",1)<>0 Then
ArrContent=Split(Content,"日志内分页代码")
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='center">共 " & x & " 页:" & PageList & "</div><hr>"
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),"日志内分页代码",1)<>0 Then
ArrContent=Split(content,"日志内分页代码")
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='center'>共 " & x & " 页:" & PageList & "</div><hr>"
End If
End If
response.write(Content)
End Sub%>
最后备注:有人喜欢使用<div style=""page-break-after: always""><span style=""display: none""> </span></div>来做为日志内分页代码,好处是FCK编辑器代码不用修改的情况下就可以直接利用到已经附带的打印预览分页按钮来做为日志内分页代码的按钮。