增加了“随机文章” 用QQ邮箱阅读空间订阅我的博客。

十一月 23, 2005 | tags 程序  BLOG  修改   | views
Comments 0
  当网站上面的文章越来越多的时候,最早发表的文章,很可能永远都只会被埋在最底下,很少有机会被来访者阅读得到。因为一来不可能每篇文章都非常有价值,以吸引读者一篇一篇的连续翻下去。就算真的这样,要翻差不多400篇的文章,这也是不太现实的事。于是想到如果可以实现随机文章的显示就好了。这样一来,一些较早前发表的文章就有机会被来访者看到(幻灭语录)。
  但是昨天七夜给我看他的代码时,我简单看了看,觉得有点麻烦,也就懒得修改,今天看到幻灭的文章,这个才甚合朕意,谁叫我懒惰呢?感谢七夜和幻灭。

  第一步,修改根目录下的c_system_event.asp文件,加入代码:

'*********************************************************
' 目的:随机日志显示 by 七夜 2005.11.22    
'*********************************************************
Function BlogReBuild_rnd()

     Dim i
     Dim s
     Dim objRS
     Dim objStream
     Dim objArticle

     'rnd
     Dim strPrevious

     Dim cc_w_view_i,cc_w_view_j,cc_w_view_sql
                 '生成随机取文章SQL
                 Randomize
                 cc_w_view_j = Int(Rnd*15+1)
                 cc_w_view_sql = "log_ID"
                 For cc_w_view_i = 1 To cc_w_view_j
                       cc_w_view_sql = "Rnd(" & cc_w_view_sql & ")"
                 Next

     Set objRS=objConn.Execute("SELECT [log_ID],[log_title] FROM [blog_Article] WHERE ([log_ID]>0) AND ([log_Level]>2) ORDER BY " & cc_w_view_sql & " DESC")

     If (Not objRS.bof) And (Not objRS.eof) Then
           For i=1 to 10
                 Set objArticle=New TArticle
                 If objArticle.LoadInfoByID(objRS("log_ID")) Then
                       strPrevious=strPrevious & "<li><a href="""& objArticle.Url & """ title=""" & objArticle.Title & """>" & objArticle.Title & "</a></li>"
                 End If
                 Set objArticle=Nothing
                 objRS.MoveNext
                 If objRS.eof Then Exit For
           Next
     End If

     objRS.close

     strPrevious=TransferHTML(strPrevious,"[no-asp]")

     Set objStream = Server.CreateObject("ADODB.Stream")
     With objStream
     .Type = adTypeText
     .Mode = adModeReadWrite
     .Open
     .Charset = "utf-8"
     .Position = objStream.Size
     .WriteText = strPrevious
     .SaveToFile BlogPath & "/include/rnd.asp",adSaveCreateOverWrite
     .Close
     End With
     Set objStream = Nothing

     If strPrevious<>"" And ZC_STATIC_TYPE="shtml" Then
           Call RemoveBOM("rnd.asp")
     End if

     BlogReBuild_rnd=True

End Function

  注:其中的

For i=1 to 10

是设定随机文章的篇数,这里设为10篇。
  第二步,也是修改这个文件,在Blog ReBuild里面增加一行

BlogReBuild_Rnd

  第三步,修改根目录下的c_html_js.asp文件,在

ElseIf f="misc" Then
            f="MISC"

  后面加上

ElseIf f="rnd" Then
            f="RND"

  至此,修改工作完成,接下来就是在适当的位置调用它。以首页调用为例,这样调用即可:

<div class="function">
<h3>随机文章</h3>
<ul>
<script language="JavaScript" src="http://www.likk.com/blog/c_html_js.asp?include=rnd" type="text/javascript"></script>
</ul>
</div>

  注意,这种方法实现的随机调用文章,只有重建索引后才会更新,而不是每次刷新页面都会更新。

  以上来自幻灭同题文章
  




发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。