2005年3月9日更新:敬告各位使用這支外掛前先三思而後行,目前發現這支外掛會開啟IE安全性漏洞而給間諜程式與病毒有入侵電腦的可能,你可以使用FireFox進行瀏覽,或下載並安裝Ad-aware以清除間諜程式暗藏在電腦暫存檔裡的疑慮。

 幾週前,carrie2046曾問到如何在Sidebar顯示最新回應的問題,今天實作之後總算找到解答了。

 這支外掛:Farrago Recent Comments Hack 1.03就是專門設計來解決Blogger.com不提供最新回應的問題,安裝與設定都相當簡便,大概不用三分鐘就能在自己的blog上DIY一個Recent Comments。如果你懶得看那一堆英文說明,那麼參考以下我的實作步驟吧:

(一)修改日期設定

修改位置:
(1)Setting>Comments>Comments Timestamp Format
(2)Setting>Formatting>Timestamp Format
確認為
mm/dd/yyyy hh:mm:ss
(02/23/2005 2:39:39 PM)
格式。
備註:
為求保險起見,我在Setting>Formatting裡把Date Language也一併改為English(US)。

(二)在Sidebar適當處貼入語碼

 以我為例,我是貼在Previous Post之後。語碼如下:

<!-- **** FARRAGO RECENT COMMENTS HACK **** -->
<!-- Version 1.03 -->
<!-- Copyright © 2004 Ebenezer Orthodoxy -->
<!-- http://boggerhacks.blogspot.com -->
<!-- ************** OPTIONS *************** -->
<script type="text/javascript" language="JavaScript1.2">
var titleText = "Recent Comments";
var numberToShow = 5;
var displayTemplate = "[name]:<br/>[title]";
var nameIsLink = true;
</script>
<!-- ********* CODE DO NOT CHANGE ******** -->
<script type="text/javascript" language="JavaScript1.2">
var comments=new Array(0);var title = "";
var itemurl = "";
function getSortDate(strDate){var d=new Date(strDate);
var day=''+d.getDate();if(day.length==1)day='0'+day;
var month=''+(d.getMonth()+1);if(month.length==1)
month='0'+month;var hour=''+d.getHours();
if(hour.length==1)hour='0'+hour;var min=''+
d.getMinutes();if(min.length==1)min='0'+min;var sec=''+
d.getSeconds();if(sec.length==1)sec= '0'+sec;
var sortDate=''+d.getFullYear()+month+day+hour+min+sec;
return sortDate;}
function recentComment(t,u,i,a,d){var rcmnt=
document.getElementById('frch'+i).innerHTML;
while(rcmnt.indexOf("\n") > -1)rcmnt=
rcmnt.replace("\n","");while(rcmnt.indexOf(" />") > -1)
rcmnt=rcmnt.replace(" />","/>");
while(rcmnt.indexOf(" <a/>") > -1)rcmnt=
rcmnt.replace(" <a/>","<a/>");var author=a;var pos=
rcmnt.toLowerCase().lastIndexOf('<br><a></a>posted by');
var pos2=
rcmnt.toLowerCase().lastIndexOf('<br><a></a><a></a>');
var pos3=
rcmnt.toLowerCase().lastIndexOf('<br/><a/><a/>');
var pos4=
rcmnt.toLowerCase().lastIndexOf('<br/><a></a><a></a>');
var aoffset=pos+6;if (pos3 > -1) pos2=pos3;
if (pos4 > -1) pos2=pos4;
if (pos2 > -1){pos=pos2;aoffset=
rcmnt.toLowerCase().lastIndexOf('<a><b> </b></a>');
if (aoffset==-1)aoffset=
rcmnt.toLowerCase().lastIndexOf('<a><b></b></a>')-1;}
if (pos > -1){author=
rcmnt.substr(aoffset+15,rcmnt.length-1);var expt="";
expt=rcmnt.substr(0,pos-4).replace(/(<([^>]+)>)/ig,"");}
else expt=rcmnt.replace(/(<([^>]+)>)/ig,"");
author=author.replace("<A ","<a ");
if (expt.length > 50){expt=expt.substr(0,50);
if (expt.lastIndexOf(' ') > -1)
expt=expt.substr(0,expt.lastIndexOf(' '));expt+='...';}
expt=expt.replace('"',"\"");expt=expt.replace("'","\'");
if (!nameIsLink)author=author.replace(/(<([^>]+)>)/ig,"");
var st=getSortDate(d)+'<li>'+displayTemplate+'</li>';
st=st.replace('[name]',author);
st=st.replace('[title]','<a title="'+expt+'" href="'+
u+'#c'+i+'">'+t+'</a>');comments.push(st);}</script>
<MainPage><h2 class="sidebar-title">
<script type="text/javascript" language="JavaScript1.2">
document.write(titleText+'</h2>');</script>
<Blogger>
<span id="frcht<$BlogItemNumber$>"
style="visibility:hidden;position:absolute;">
<BlogItemTitle><$BlogItemTitle$></BlogItemTitle></span>
<script type="text/javascript" language="JavaScript1.2">
title=
document.getElementById('frcht<$BlogItemNumber$>').innerHTML;
itemurl='<$BlogItemPermalinkURL$>';</script>
<BlogItemCommentsEnabled><BlogItemComments>
<span id="frch<$BlogCommentNumber$>"
style="visibility:hidden;position:absolute;">
<$BlogCommentBody$></span>
<script type="text/javascript" language="JavaScript1.2">
recentComment(title,itemurl,'<$BlogCommentNumber$>',
'<$BlogCommentAuthor$>','<$BlogCommentDateTime$>');
</script></BlogItemComments>
</BlogItemCommentsEnabled></Blogger><ul>
<script type="text/javascript" language="JavaScript1.2">
comments.sort();comments.reverse();
for (i=0; i<10 && i < comments.length && i < numberToShow; i++){
var s=comments[i];s=s.substr(14,s.length-1); document.write(s);}
</script><br/><br/><span
style="font-size:7pt;text-align:center;width:100%;border-top:1px dashed;">
<a title="Farrago Recent Comments Hack from BloggerHacks"
href="http://bloggerhacks.blogspot.com">BloggerHacks</a> </span>
</ul></MainPage>
<!-- END FARRAGO RECENT COMMENTS HACK -->
 接著你可以自行修改語碼中
”************** OPTIONS ***************”
之下的幾項參數(即粗黑體顯示的部分):
(1)「titleText = "Recent Comments";」:標題,你可以把Recent Comments換成”最新回應”。
(2)「numberToShow = 5;」:想要顯示的最新回應數,預設是5,你可以改成10。
(3)「displayTemplate = "[name]:[title]";」:顯示的格式。
(4)「nameIsLink = true;」:是否為留言者加上超連結。
 就是這樣,應該不難,祝你成功。

7 留言

C寫道…
jas你真是太厲害了
沒有你這篇教學指南
看那些東西我一定都看得頭昏腦脹的
~><~
Jas寫道…
應該說我也是托你之福才裝了這個實用外掛,
寫下實作記錄只是舉手之勞。
Jas寫道…
別客氣,小戴。
Irene寫道…
我也有偷偷試用,真謝謝你的分享:D
不過,是不是不在首頁的文章回應就無法顯示出來呢?
我一直很納悶,所以就刪了。
現在只靠mail通知回應別人的留言。
Jas寫道…
的確像你所說的那樣,
這支外掛只對首頁文章有效,
因為它的運作只是從頁面擷取而非進資料庫去抓,
以下是外掛作者對這一點的回應:
”I don't have any way to access blogger's actual comments database, so I can only work with whatever posts are available on the main page.
Not perfect, but better than nothing. ”
Jas寫道…
先前一直沒發現有異狀,
大概因為我比較常用FireFox瀏覽,
而且也裝了Ad-aware,
所以即使用IE瀏覽也沒發生Dai所描述的狀況,
剛才把Ad-aware關掉,
然後再以IE來開網頁,
大概十多分鐘後開始在工具列出現無標題的工作視窗,
一切就如Dai所描述的那樣,
有一支特洛伊病毒似乎藉著這支hack的java語法順勢鑽到IE的安全性漏洞裡去發作。
我想,暫時就不要用這支外掛好了,同時也謝謝Dai的提醒。
C寫道…
之前在oui有看到blogger.com病毒通告,
我還想我怎麼沒狀況哩...
現在想想,
原來每回跳出來的什麼xxxtoolbar就是這樣來的嗎...

感謝dai和jas9的通告.
快去刪...*逃*
較新的 較舊