Pages

Subscribe:

Ads 468x60px

Thursday, June 16, 2011

如何做一个按label分类的"5 latest posts"小板块

首先做个小布告,鉴于朋友们的comments越来越多,我专门做了个最新留言的小板块。它就在右边的"日记", "MV", "动漫", "影评"的后面,就是那个颜色不一样的“~留言~”。点击那个tab各位同学就可以看到本blog的4条最新留言了。最底下也有个链接可以看到过往的所有留言。

具体效果如左图所示。 当然,机器猫吃铜锣烧是没有的,那个是我为了好玩才加在这张截图上面的哈哈。


同学们可能会注意到,我网站右边有9个板块,加上网站最底下的那个“技术交流”板块,一共有10个板块,分别显示着不同label的最新5篇文章。有“日记”,“MV”,“天朝动态”,“动漫”,“影评”,“音乐”等等。(啊!我真是涉猎广泛,居然一个人在写这么多横跨各个领域的栏目。OK!短暂的自恋到此为止)。稍微熟悉blogger的同学都知道,我们可以通过添加一个"recent posts"的gadget来显示全blog最新的若干个贴子,但是那个gadget却无法单独显示某一个分类(label)下的最新几篇贴子。像我这样兴趣广泛,喜欢把一个网站用很多label分成很多栏目的人来说,不能实现这个功能是很头疼的。

但是通过JaveScript我们可以做到这一点。进入你Blogger的“design”下面的“Edit Layout”,在你想要生成该板块的地方添加一个Google自带“HTML/JavaScript”的gadget,并且贴入下面的代码:
<!--------------- Recent Posts by Label Start --------------->
<script type="text/javascript">
function recentpostslist(json) {
 document.write('<ul>');
 for (var i = 0; i < json.feed.entry.length; i++)
 {
    for (var j = 0; j < json.feed.entry[i].link.length; j++) {
      if (json.feed.entry[i].link[j].rel == 'alternate') {
        break;
      }
    }
var entryUrl = "'" + json.feed.entry[i].link[j].href + "'";//bs
var entryTitle = json.feed.entry[i].title.$t;
var item = "<li>" + "<a href="+ entryUrl + '" target="_blank">' + entryTitle + "</a> </li>";
 document.write(item);
 }
 document.write('</ul>');
 }
</script>
<script src="http://blogname.blogspot.com/feeds/posts/summary/-/YourLabel?max-results=number&alt=json-in-script&callback=recentpostslist"></script>

<p style="float: right;"><a style="color: rgb(51, 51, 255);" href="http://bulake83.blogspot.com/search/label/
YourLabel/">More posts under this label &gt;&gt;</a></p>
<!--------------- Recent Posts by Label End --------------->

此代码的前半部分,负责循环读取并显示某个label的文章。你只需要把上面的“Blogname.blogspot.com”换成你自己的blog的网址,把“YourLabel”换成你想显示的label即可,比如说“音乐”,然后把“number”换成一个阿拉伯数字,就是你想在这个板块里显示多少篇文章。

此代码的后半部分,就是<p style="float:right;">之后的部分,负责显示所有该label的文章。

保存之后你的小板块就应该可以工作啦!如果你想要像我一样做一个显示comments的板块,只需要把上面从“feeds”到“?max-results”之间的那一段换成:“/comments/default”即可。还要把后半部分的链接(就是href=之后的那部分)换成你的comments的RSS的链接就行了。

这里我故意没有用Google自带的"recent comments"的gadget,原因有二:
1. 那个gadget更新比较慢,往往一个网友留言之后要好久才能在它那里显示出来;而我的这个手写的代码则很快;
2. 这个手写的代码可以选择隐藏留言网友的姓名(至于怎么显示这里容我按下不表),这样既可以节省空间,格式看上去又比较清爽。

至于怎么做成我的网站这样的每个小板块都有自己的背景色,怎么让这9个小板块都是并排显示,那就会是另一篇文章啦!
[完]

0 comments:

Post a Comment