2009年6月22日 星期一

Blogger最新回應的功能

一直在版面配置中尋找這個"最新回應"功能的套件, 沒有想到都找不到
後來轉念一想, 去網路找找吧, 才發現, 又是一個自建功能的語法

找了幾個網站之後,發現只要在新增blogger裡頭的元素"資訊提供",將RSS或Atom資訊提供的內容加入網誌就可以, 網址則是填"http://xxx.blogspot.com/feeds/comments/full"就可以產生這個功能,但這有個問題,它會將回應的全文寫入,若是回應太長,則很容易破壞版面的配置,況且也沒有時間與作者列示,還有若是回應中若有換行的話,它也會跟著換行。最後決定使用堯@部落格中的方法, 它提供了程式產生器使用, 只要打入幾個資料, 就可以產生自己所要的程式碼, 相關後續的討論其實也不少...
程式碼產生後,再做一下局部的修改,就是我自己要的部份了。
目前本站的"最新回應"使用程式碼摘錄如下:

<div id="newcommentsnestzone">
<h2>Loading...</h2>
</div>

<script>
function compareentry(a,b){
order= Date.parse(a.published.$t.replace(/^(\d{4})-(\d{2})-(\d{2})T([0-9:]*)([.0-9]*)(.)(.*)$/,
'$1/$2/$3 $4 GMT')) - Date.parse(b.published.$t.replace(/^(\d{4})-(\d{2})-(\d{2})T([0-9:]*)([.0-9]*)(.)(.*)$/,
'$1/$2/$3 $4 GMT'));
return 0-order;

}
function handleCommentsnestzone(json) {

var temp = '<h2>最近的回應</h2><ul id="Feed001_feedItemListDisplay">';
var postshow=5;
var sortentry=json.feed.entry.sort(compareentry);
for (var i=0, post; post = sortentry[i]; i++) {
if(i>=postshow) break;
var title=post.content.$t.substr(0,12);
var link=post.link[2].href.replace("#c","#comment-");
var authorname=post.author[0].name.$t;
var timestamp=post.published.$t.substr(0,10);
temp += '<li><span class="item-title"><a href="'+link+'">'+ title +'...</a>-'+timestamp+'-'+authorname+'</span></li>';
}
temp+="</ul>";
document.getElementById("newcommentsnestzone").innerHTML = temp;
}
</script>

<script src="http://nestzone.blogspot.com/feeds/comments/default?alt=json-in-script&callback=handleCommentsnestzone" type="text/javascript"></script>


相關做法,可以參閱堯@部落格
同時也幫我家老大的網誌加了這個功能...呵呵:)

1 則留言:

Unknown 提到...

使用這個功能才發現, 這裡幾乎沒有回應..哈哈..