2007年10月7日星期日

Z-Blog文章排行插件增加用户推荐文章

  今天将“Z-Blog随机文章和文章排行插件”新增加了一个功能,就是结合“Z-Blog文章投票插件”的数据库,产生了一个新的随机排行:用户推荐文章排行。

  这个排行的算法比较简单,根据“Z-Blog文章投票插件”中用户投票的结果,当用户投票总数超过10次的时候,文章即可加入用户排行,排行按照用户投票的分数由高向低显示,我目前使用这个文章排行替换原来的随机文章的内容,因为这个排行对于新用户来说,还是有一定的价值的。

  这个文章排行的列表是完全由用户自己决定的,如果用户觉得哪篇文章不好看却排在前面,可以用投票的方式将文章“选”下去,如果你发现更好的文章,也可以将文章“投”上来,不过如果投票用户特别多的话,那么选下去或者选上来就比较困难了。文章显示的先后顺序按照我先前写的Z-Blog热文排行的算法,根据文章浏览次数,评论次数,引用次数以及文章的日期来排序。

  下面是这个插件的相关代码,将这些代码加入到“Z-Blog随机文章和文章排行插件”中去,然后再增加一行“txtout = Replace(txtout, "<!--用户推荐-->", strtoprate)”,然后修改模板增加“<!--用户推荐-->”即可。显示效果参见我文章下面的“文章排行”栏目。

    '用户推荐排行
    connstr2="DBQ=c:inetpubwwwrootPLUGINRatingRating.mdb;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
    set conn2=server.createobject("ADODB.CONNECTION")
    conn2.open connstr2
    strSql = "select top 10 id from Score WHERE (Rnumber>=10) ORDER BY Score desc"
    rs.Open strSql, conn2, 1, 1
    strtopid = " "
    While Not rs.EOF
        strtopid = strtopid & "log_ID=" & cstr(rs("id")) & " or "
        rs.movenext
    Wend
    rs.Close
    set conn2 = Nothing
    strtopid = left (strtopid,len(strtopid)-4) '去掉尾部
    strSql = "select top 10 log_ID,log_Title from blog_Article WHERE " & strtopid & " ORDER BY log_CommNums*100 + log_TrackBackNums*200 + sqr(log_ViewNums)*10 - (date()-Log_PostTime)*(date()-Log_PostTime) DESC "  '热文排行算法
    rs.Open strSql, conn, 1, 1
    strtoprate = " "
    While Not rs.EOF
        strtoprate = strtoprate & "<tr class=""data""><td align=""left""> <a href=""" _fcksavedurl=""""" _fcksavedurl=""""" & patharchives & CStr(rs("log_ID")) & ".html"">" & cutStr(rs("log_Title"),intCutLen) & "</a></td>"
        rs.movenext
    Wend
    rs.Close