長文章頁用分頁符號來顯示,想用ASP也實現這種功能,可發現只有根據字數進行分頁的方法,但這種方法有一個BUG,就是如果你文章內容中如果有UBB代碼,它很容易造成在[code][/code]之間進行分頁,或乾脆就把[code]分解成了[co和de],這樣文章顯示就會出現錯誤。
以下幾個步驟將能夠完全實現。
第一步:
按照正常的文章系統一路做下去,後台的文章添加,文章的檢索,和文章的詳細頁,都是常規方式操作,這裡不加描述,請參閱相關帖子。只是在文章新增時,在你想讓它分頁的地方加上分頁符號:「|||」(當然這個符號你可以隨便用,例如:[page]、&&&、###、@@@…
,只要它不會
在文章要正常顯示的地方出現就行了。
文章內容頁(display.asp),前三個都是不用處理的頁面,看下面的圖片我想一般的小鳥就會做了,關鍵是最後一個displasy.asp,所有實現分頁的程式碼都在這裡。
第二步:
在文章正文內容的動態資料部分做一些手腳,以下是程式碼和解釋:
<%
'這裡要處理接收到的分頁參數,以此來進行顯示第幾頁的內容
'下面這兩句話就是如果沒有page這個參數傳來就讓變數pageNum取顯示第一頁的值:0
If Request("page")="" Then
pageNum=0
'否則就給變數賦值為傳遞來的page裡的參數,來顯示其他頁
Else
pageNum=Request("page")
End if
%>
<%
'如果加了可選執行UBB程式碼,可以加上下面的程式碼
'rs("NoUBB")是資料庫裡關於禁用UBB的字段,0為禁用,1為執行
If rs("NoUBB")=0 then
'為避免和文章內容連結出現錯誤,用Replace函數把分頁代碼「|||」的前後各加一個全角的
'rs("content")是資料庫裡正文的字段,在這裡加上UBB或停用UBB
Content=Replace((unHTML(rs("content"))),"|||"," ||| ")
Elseif rs("NoUBB")=1 then
Content=Replace((ubb(rs("content"))),"|||"," ||| ")
End if
%>
<%
'這裡就是關鍵了
'我們用split函數將文章分段取出存入變數content
ContentStr=split(Content,"|||")
'按照剛才從URL參數取得的要顯示那面的那個變量,就循環顯示一頁
For i=pageNum to pageNum
%>
<!--這裡將是文章正文內容-->
<%=ContentStr %>
<% Next %>
</td>
</tr>
<tr>
<td height="30" class="ClassName">本文共分
<%
'分頁的地方,用ubound(ContentStr)取得文章一共分為幾頁,注意這裡是從0開始,所以總頁數需要加1
For p = 0 to ubound(ContentStr)
'連結還是本頁面,只不過文章ID參數後面還要加上一個分頁的參數:page
%>
<a href="display.asp?ID=<%=rsquest("ID")%>&page=<%=p%>" class=""><%=p+1%></a>
<% Next %>頁
很簡單吧,要是把註解都刪除,才15行程式碼,不過還要加工一下,讓它能有上一頁、下一頁和當前頁突出的功能就完善了。
已測試過,除非文章裡出現那個分頁符,否則各種類型都不會出錯,當然可以把|||的數量加大例如:||||||,再六個「|」以下在文章出現都沒事,但六個以上就會分頁了,選擇一個好的分頁符號就可以了