gseeker
增加了“随机文章”
将文章归档于 幻灭日志 由. Ken Wong on 2005-11-24
  这源自于昨天的一个想法。那就是当网站上面的文章越来越多的时候,最早发表的文章,很可能永远都只会被埋在最底下,很少有机会被来访者阅读得到。因为一来不可能每篇文章都非常有价值,以吸引读者一篇一篇的连续翻下去。就算真的这样,要翻差不多400篇的文章,这也是不太现实的事。于是想到如果可以像wordpress那样实现随机文章的显示就好了。这样一来,一些较早前发表的文章就有机会被来访者看到



  自己不懂编程,最好的方法当然是去请教高手啦,比如七夜william。本站很多修改都是参考他们的代码,在此表达深深的谢意!之前七夜曾放出过"一周热门"的代码,也就是用来列出一周内点击最多的文章。昨晚在z-blog官方论坛提出这个请求后,七夜很快就写出代码了。再结合原本的"一周热门"代码,于是实现了"随机文章"的功能。

  老习惯,将修改方法记录如下,一来备查,二来共享。

  第一步,修改根目录下的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="<#ZC_BLOG_HOST#>c_html_js.asp?include=rnd" type="text/javascript"></script>
</ul>
</div>


  注意,这种方法实现的随机调用文章,只有重建索引后才会更新,而不是每次刷新页面都会更新。如果找到更好方法,将会补充在这里。

  30日补充:不知何故,随机文章好像不太"随机",也就是好像只有几种随机组合而已。不然是不是和文章数量有关。在QQ上请教七夜后,给出了一个方法,即是将第一段代码中的:

Int(Rnd*15+1)


  中的15改大一点,改为20。经过试验,似乎有效。遇到相同问题的朋友可以一试。

Permalink: 增加了“随机文章”
img Addthis img Ask img Blinklist img del.icio.us img Digg img Fark img Facebook img Google img Lycos img Ma.gnolia Add this page to Mister Wong Mr Wong img Netscape img Netvousz img Newsvine img Reddit img StumbleUpon img Slashdot img Tailrank img Technorati img Wink img Yahoo

Vote for 增加了“随机文章”:

  • Currently 8.67/10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
分值情况: 8.67 / 3 评分
 
Share It
CW工具栏安设
RSSrss   | 所有的部落格订阅选择
Google google   |   什么是RSS?
Yodao Yodao
Netvibes Netvibes
AnothrAnothr
TwitterFollow us on Twitter!