整个网络 最新的文章 最热门的*五*个话题 G多点 G事八卦 G源共享 挨踢G讯

十一月 23, 2005

增加了“随机文章”

由. Ken Wong 将文章归档于 幻灭日志

  这源自于昨天的一个想法。那就是当网站上面的文章越来越多的时候,最早发表的文章,很可能永远都只会被埋在最底下,很少有机会被来访者阅读得到。因为一来不可能每篇文章都非常有价值,以吸引读者一篇一篇的连续翻下去。就算真的这样,要翻差不多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。经过试验,似乎有效。遇到相同问题的朋友可以一试。

广告


固定链接: 增加了“随机文章”
关键词: BLOG  技巧 

引用: http://www.creative-weblogging.com/cgi-bin/mt-tb.pl/33000



广告


广告


广告


CW工具栏安设
RSSrss   | 所有的部落格订阅选择
Googlegoogle  |   什么是RSS?
YodaoYodao
Netvibes Netvibes
AnothrAnothr
时事通讯

使用我们的搜索寻找其他有趣的文章

这blog而已 全网络
广告 -
这里订您的.


 
点击联系广告合作.


  • 推荐书

  • GSeeker今天开始将恢复更新。
    ——Hong Xiaowan
    GSeeker(G速客;原“幻灭的麦克风”)是一个专注于Google及搜索行业的个人blog。非Google官方网站。我们试图记录真实的Google,包括它的花边新闻。Google不是我们的信仰,只是我们的兴趣。如果您发现与Google或搜索行业有关的有趣的信息,不妨给我们发邮件。感谢您的访问!
    ——Ken Wong(幻灭)
  • Other blogs in the same channel in the Creative Weblogging Network

广告 -
这里订您的.