十一月 23, 2005
增加了“随机文章”
由. Ken Wong 将文章归档于 幻灭日志
。
自己不懂编程,最好的方法当然是去请教高手啦,比如七夜和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。经过试验,似乎有效。遇到相同问题的朋友可以一试。
引用: http://www.creative-weblogging.com/cgi-bin/mt-tb.pl/33000






























