2006-04-11

在blogger.com的blog右侧栏显示最新评论

这个方法最多能显示blog首页的最新10条评论。如果你的blog上有大量的评论留言,那么页面的加载将会有点慢,因为程序将检查本页的所有帖子的评论,并根据留言时间排序。好了,言归正传:


  • 修改你的blogger的日期设置;

  • 进入你的blog的“设置”-》“意见”,将评论的时间戳格式设置为:mm/dd/yyyy hh:mm:ss (02/11/2005 8:37:08 PM).如果你用的是blogger的中文界面,那么格式里面很可能没有这个选项。那么请你到“设置”->“格式设定”->“日期语言”,将其修改为英语并保存更改。然后你再回到“设置”-》“意见”,就应该有上述时间格式了。
  • 找到你的blog模板的侧栏模块。它看起来应该是类似这个模样:


  • <h2 class="sidebar-title">Previous</h2>
    <ul id="recently">
    <BloggerPreviousItems>
    <li><a href="<$BlogItemPermalinkURL$>"><$BlogPreviousItemTitle$></a></li>
    </BloggerPreviousItems>
    </ul>

    <MainOrArchivePage>
    <h2 class="sidebar-title">Archives</h2>
    <ul class="archive-list">
    <BloggerArchives>
    <li><a href="<$BlogArchiveURL$>"><$BlogArchiveName$></a></li>
    </BloggerArchives>
    <ArchivePage><li><a href="<$BlogURL$>">Current Posts</a></li></ArchivePage>
    </ul>
    </MainOrArchivePage>

  • 在上面的Previous和Archive模块之间的部位,插入以下代码:


  • <!-- **** 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;">
    </span>
    </ul></MainPage>
    <!-- END FARRAGO RECENT COMMENTS HACK -->

  • 保存你的模板,重新发布索引,就应该可以了!


翻译自:bloggerhacks

3 条评论:

  1. 我用的Haloscan的评论,用你提供的代码我试了一下在右侧并没有输出最新的评论啊????
    怎么回事哦?

    回复删除
  2. 这个只能用于blogger自带的评论,haloscan的就不行了。因为原理是:js代码搜索页面上的评论,然后显示出来。
    效果可以看看这个例子:
    http://kuaiguobin.512j.com/

    回复删除
  3. 哦,明白了,谢谢啊!^_^

    回复删除