2009-10-17

blogger文章下方添加随机文章

经过长时间的折腾,我想要的功能这个博客已经基本实现,只有一个功能是我一直想实现,而又找不到满意的实现方法的,那就是随机文章。很早就知道B Stir之类的方法,但是速度慢,可定制性差让我宁愿不使用。我要的是一种可以与我已有的“相关文章”相似的方法。綸太郎最近贴出了通过抓取RSS显示相关文章的方法,虽然只能在边栏实现但已经很不错,于是昨晚就把首页的“猥瑣時間”代换成“隨機文章”。今天又再折腾了一下,居然实现了在每篇文章下方添加随机文章的方法。

进入后台 > 版面配置 > 修改HTML点选“展開小裝置範本”,找到</head>,在它的前面添加下面的代码:

<script type='text/javascript'>
//<![CDATA[
var randarray = new Array();var l=0;var flag;
var numofpost=5;function randomposts(json){
var total = parseInt(json.feed.openSearch$totalResults.$t,10);
for(i=0;i < numofpost;){flag=0;randarray.length=numofpost;l=Math.floor(Math.random()*total);for(j in randarray){if(l==randarray[j]){ flag=1;}}
if(flag==0&&l!=0){randarray[i++]=l;}}document.write('隨機文章:<ul>');
for(n in randarray){ var p=randarray[n];var entry=json.feed.entry[p-1];
for(k=0; k < entry.link.length; k++){if(entry.link[k].rel=='alternate'){var item = "<li>" + "<a href=" + entry.link[k].href + ">" + entry.title.$t + "</a> </li>";
document.write(item);}}
}document.write('</ul>');}
//]]>
</script>

红色字体部分 numofpost=5 控制显示的相关文章数量,可以看到我的设置是5篇,你可以按照自己的喜好设置一个数。抱怨一下,虽然我不懂javascript,但我可以看出作者的代码很乱,使得可读性极差。

找到下面这段代码:

<b:if cond='data:post.labels'>
<data:postLabelsLabel/>
<b:loop values='data:post.labels' var='label'>
<a expr:href='data:label.url' rel='tag'><data:label.name/></a><b:if cond='data:label.isLast != "true"'>,</b:if>
</b:loop>
</b:if>

插入红色字体部分,如下面代码:

<b:if cond='data:post.labels'>
<data:postLabelsLabel/>
<b:loop values='data:post.labels' var='label'>
<a expr:href='data:label.url' rel='tag'><data:label.name/></a><b:if cond='data:label.isLast != &quot;true&quot;'>,</b:if>
</b:loop>
<b:if cond='data:blog.pageType == &quot;item&quot;'>
&lt;script src=&quot;/feeds/posts/default?alt=json-in-script&amp;start-index=1&amp;max-results=1000&amp;callback=randomposts&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</b:if>
</b:if>

<b:if cond='data:blog.pageType == &quot;item&quot;'>”与“</b:if>”的作用是使被它们包围的代码只在文章页面实现。点击保存就OK啦。效果如下图:
实现文章尾随机文章
(这样的“随机文章”与“相关文章”真是“般配”)

参考文章

       裝上隨機文章(Random Posts),加強部落格的黏著度

       加入相關文章功能 (Related Post)

(完)

5 条评论:

  1. 謝謝你的熱心實作,我安裝後也成功了,再次感謝。

    回复删除
  2. To 綸太郎:
    不用客气,我从你那里学到的要比这多太多了。

    回复删除
  3. 好讚~你和綸太郎都是造福部落客的神丫~已套用,再次感謝~

    回复删除



  4. ,



    嗨,我找不到這一段代碼...

    回复删除

留言须知:
0. 你有權保持沉默,但你所說的將作為此BLOG有人訪問的證據。
1. 支持的HTML標籤:<a href="" title=""> <b> <em> <i> <strong>。
2. 留言留名,不然易被无视。(在“评论”中选择“名称/网址”,网址可以不填)。
3. 原則上我不删除留言,除非那則留言侮辱到你。