Home » , » Cara pasang widget Recent comments dengan avatar (image profile) di Blogspot

Cara pasang widget Recent comments dengan avatar (image profile) di Blogspot

Recent comments with avatar (image profile) seperti yang boleh anda lihat pada sidebar blog saya adalah widget yang sangat menarik. Widget tersebut kini memaparkan gambar avatar pemberi komen beserta dengan komen ringkas pada post yang berkaitan dalam Blogger.

Untuk memasang widget recent comment dengan avatar ini pada blog anda, sila ikut beberapa langkah di bawah.

Langkah 1

Log in blog > Dashboard > Layout > Add A Gadget. Seterusnya klik pada HTML/Javascript.

Langkah 2

Salin kod di bawah dan paste pada ruang Content HTML/Javascript (rujuk langkah 1).


<style type="text/css">
.recent-comment        {
border-bottom:#424242 1px solid;
text-transform:none;color:#fff;font-size:13px;height:55px;width:275px; padding-left: 24px; }

.recent-comment a:link {font:bold 11px Tahoma ;color: #f7441a;text-transform:uppercase; }
.recent-comment-admin  { background-color: #000; }
.recent-comment-ico    { margin-left:-20px;padding-top:5px;float:left;margin-right:8px;}
.recent-comment-header {}
.recent-comment-body   { padding-right: 4px; font-size: 95%;}
.recent-comment-footer { font-size: 85%; }
</style>
<script type="text/javascript">
//
// Recent Comments blogger gadget by MS-potilas 2011, using feed avatars
// see http://yabtb.blogspot.com/2011/12/son-of-better-recent-comments-gadget.html
//
// CONFIG:
var numRecentComments = 5;
var numPerPost = 2; // max comments per post (to try) or 0
var maxCommentChars = 70;
var maxPostTitleChars = 0; // if 0, use full post title

var txtWrote = '';
var txtMore = '';
var txtTooltip = '[user] on &quot;[title]&quot; - [date MM/dd/yyyy hh:mm]';
var txtAnonymous = ''; // empty, or Anonymous user name localized
// Variables [xxx] in texts:
// supports [title], [user], [date], [time], [datetime], [date format]
// format supports: yyyy=long year, yy=short year, MM=month(01-12), dd=monthday, hh=hour, mm=min, ss=sec

var getTitles = true;   // false faster
var trueAvatars = true; // false faster
var urlMyAvatar = '';   // can be empty (then it is fetched) or url to image
var urlMyProfile = '';  // set if you have no profile gadget on page
//
var cropAvatar = true;
var sizeAvatar = 40;
var urlNoAvatar = "http://lh4.googleusercontent.com/-069mnq7DV_g/TvgRrBI_JaI/AAAAAAAAAic/Iot55vywnYw/s"+sizeAvatar+"/avatar_blue_m_96.png"; // http://www.blogger.com/img/avatar_blue_m_96.png resizeable
//
var urlAnoAvatar = 'http://www.gravatar.com/avatar/00000000000000000000000000000000?d=mm&s=' + sizeAvatar;
var maxResultsPosts = "";       // or for example "&max-results=100"
var maxResultsComments = "";    // or for example "&max-results=300"
// CONFIG END
var urlToTitle = {};
function replaceVars(text, user, title, date) {
  text = text.replace('[user]', user);
  text = text.replace('[date]', date.toLocaleDateString());
  text = text.replace('[datetime]', date.toLocaleString());
  text = text.replace('[time]', date.toLocaleTimeString());
  text = text.replace('[title]', title.replace(/\"/g,'&quot;'));
  var i = text.indexOf("[date ");
  if(i > -1) {
    var format = /\[date\s+(.+?)\]/.exec(text)[1];
    if(format != '') {
      var txtDate = format.replace(/yyyy/i, date.getFullYear());
      txtDate = txtDate.replace(/yy/i, date.getFullYear().toString().slice(-2));
      txtDate = txtDate.replace("MM", String("0"+(date.getMonth()+1)).slice(-2));
      txtDate = txtDate.replace("mm", String("0"+date.getMinutes()).slice(-2));
      txtDate = txtDate.replace("ss", String("0"+date.getSeconds()).slice(-2));
      txtDate = txtDate.replace("dd", String("0"+date.getDate()).slice(-2));
//or: txtDate = txtDate.replace("dd", date.getDate());
      txtDate = txtDate.replace("hh", String("0"+date.getHours()).slice(-2));
//or: txtDate = txtDate.replace("hh", date.getHours());
      text = text.replace(/\[date\s+(.+?)\]/, txtDate)
    }
  }
  return text;
}
if(urlMyProfile == "") {
  var elements = document.getElementsByTagName("*");
  var expr = /(^| )profile-link( |$)/;
  for(var i=0 ; i<elements.length ; i++)
    if(expr.test(elements[i].className)) {
      urlMyProfile = elements[i].href;
      break;
    }
}
function getPostUrlsForComments(json) {
  for(var i = 0 ; i < json.feed.entry.length ; i++ ) {
    var entry = json.feed.entry[i];
    for (var k = 0; k < entry.link.length; k++ ) {
      if (entry.link[k].rel == 'alternate') {
        href = entry.link[k].href;
        break;
      }
    }
    urlToTitle[href] = entry.title.$t;
  }
}
function showRecentComments(json) {
  var postHandled = {};
  var j = 0;
  if(numPerPost) {
    while(numPerPost < numRecentComments) {
      for(var i = 0 ; i < json.feed.entry.length ; i++ ) {
        var entry = json.feed.entry[i];
        if(entry["thr$in-reply-to"]) {
          if(!postHandled[entry["thr$in-reply-to"].href])
              postHandled[entry["thr$in-reply-to"].href] = 1;
          else
              postHandled[entry["thr$in-reply-to"].href]++;
          if(postHandled[entry["thr$in-reply-to"].href] <= numPerPost)
            j++;
        }
      }
      if(j >= numRecentComments)
        break;
      numPerPost++;
      j = 0;
      postHandled = {};
    }
    if(numRecentComments == numPerPost)
       numPerPost = 0;
  }
  postHandled = {};
  j = 0;
  for(var i = 0 ; j < numRecentComments && i < json.feed.entry.length ; i++ ) {
    var entry = json.feed.entry[i];
    if(numPerPost && postHandled[entry["thr$in-reply-to"].href] && postHandled[entry["thr$in-reply-to"].href] >= numPerPost)
      continue;
    if(entry["thr$in-reply-to"]) {
      if(!postHandled[entry["thr$in-reply-to"].href])
          postHandled[entry["thr$in-reply-to"].href] = 1;
      else
          postHandled[entry["thr$in-reply-to"].href]++;
      j++;
      var href='';
      for (var k = 0; k < entry.link.length; k++ ) {
        if (entry.link[k].rel == 'alternate') {
          href = entry.link[k].href;
          break;
        }
      }
      if(href=='') {j--; continue; }
      var hrefPost = href.split("?")[0];
      var comment = "";
      if("content" in entry) comment = entry.content.$t;
      else                   comment = entry.summary.$t;
      comment = comment.replace(/<br[^>]*>/ig, " ");
      comment = comment.replace(/<\S[^>]*>/g, "");
      var postTitle="-";
      if(urlToTitle[hrefPost]) postTitle=urlToTitle[hrefPost];
      else {
        if(hrefPost.match(/\/([^/]*)\.html/)) postTitle = hrefPost.match(/\/([^/]*)\.html/)[1].replace(/_\d{2}$/, "");
        postTitle = postTitle.replace(/-/g," ");
        postTitle = postTitle[0].toUpperCase() + postTitle.slice(1);
      }
      if(maxPostTitleChars && postTitle.length > maxPostTitleChars) {
        postTitle = postTitle.substring(0, maxPostTitleChars);
        var indexBreak = postTitle.lastIndexOf(" ");
        postTitle = postTitle.substring(0, indexBreak) + "...";
      }

      var authorName = entry.author[0].name.$t;
      var authorUri = "";
      if(entry.author[0].uri && entry.author[0].uri.$t != "")
        authorUri = entry.author[0].uri.$t;
   
      var avaimg = urlAnoAvatar;
      var bloggerprofile = "http://www.blogger.com/profile/";
      if(trueAvatars && entry.author[0].gd$image && entry.author[0].gd$image.src && authorUri.substr(0,bloggerprofile.length) == bloggerprofile)
        avaimg = entry.author[0].gd$image.src;
      else {
        var parseurl = document.createElement('a');
        if(authorUri != "") {
          parseurl.href = authorUri;
          avaimg = 'http://www.google.com/s2/favicons?domain=' + parseurl.hostname;
        }
      }
      if(urlMyProfile != "" && authorUri == urlMyProfile && urlMyAvatar != "")
        avaimg = urlMyAvatar;
      if(avaimg == "http://img2.blogblog.com/img/b16-rounded.gif" && urlNoAvatar != "")
        avaimg = urlNoAvatar;
      var newsize="s"+sizeAvatar;
      avaimg = avaimg.replace(/\/s\d\d+-c\//, "/"+newsize+"-c/");
      if(cropAvatar) newsize+="-c";
      avaimg = avaimg.replace(/\/s\d\d+(-c){0,1}\//, "/"+newsize+"/");
      if(authorName == 'Anonymous' && txtAnonymous != '' && avaimg == urlAnoAvatar)
        authorName = txtAnonymous;
      var imgcode = '<img height="'+sizeAvatar+'" width="'+sizeAvatar+'" title="'+authorName+'" src="'+avaimg+'" />';
      if (authorUri!="") imgcode = '<a href="'+authorUri+'">'+imgcode+'</a>';
      var clsAdmin = "";
      if(urlMyProfile != "" && authorUri == urlMyProfile)
          clsAdmin = " recent-comment-admin";
      var datePart = entry.published.$t.match(/\d+/g); // assume ISO 8601
      var cmtDate = new Date(datePart[0],datePart[1]-1,datePart[2],datePart[3],datePart[4],datePart[5]);

      var txtHeader = txtWrote;
      if(txtWrote.indexOf('[')==-1)
        txtHeader = authorName + ' ' + txtWrote;
      else
        txtHeader = replaceVars(txtHeader, authorName, postTitle, cmtDate);

      var tooltip = replaceVars(txtTooltip, authorName, postTitle, cmtDate);
      if(!/#/.test(href)) href += "#comments";
      document.write('<div title="'+tooltip+'" class="recent-comment'+clsAdmin+'">');
      document.write('<div title="'+tooltip+'" class="recent-comment-header'+clsAdmin+'"><div title="'+tooltip+'" class="recent-comment-ico'+clsAdmin+'">'+imgcode+'</div><a title="'+tooltip+'" href="' + href + '">' + txtHeader + ' </a></div>');
      if(comment.length < maxCommentChars)
        document.write('<div title="'+tooltip+'" class="recent-comment-body'+clsAdmin+'">' + comment + '</div>');
      else {
        comment = comment.substring(0, maxCommentChars);
        var indexBreak = comment.lastIndexOf(" ");
        comment = comment.substring(0, indexBreak);
        document.write('<div title="'+tooltip+'" class="recent-comment-body'+clsAdmin+'">' + comment + '...</div>');
        if(txtMore != "") {
          var moretext = replaceVars(txtMore, authorName, postTitle, cmtDate);
          document.write('<div title="'+tooltip+'" class="recent-comment-footer'+clsAdmin+'"><a title="'+tooltip+'" href="' + href + '">' + moretext + '</a></div>');
        }
      }
      document.write('<div style="clear:both;"></div></div>');
    }
  }
}
if(getTitles)
  document.write('<script type="text/javascript" src="http://'+window.location.hostname+'/feeds/posts/summary?redirect=false'+maxResultsPosts+'&alt=json-in-script&callback=getPostUrlsForComments"></'+'script>');
document.write('<script type="text/javascript" src="http://'+window.location.hostname+'/feeds/comments/default?redirect=false'+maxResultsComments+'&alt=json-in-script&callback=showRecentComments"></'+'script>');
</script>

Akhir sekali, klik Save.

p/s: Jika kod yang telah di save tidak berfungsi, sila gunakan kod ini (sila klik)
Share this post :

+ comments + 70 comments

12:08 PM

Terbaik bro.. =)

12:14 PM

famous i kejap... nak wat2... :)

Nice... :D

thanks atas cara nya gan, saya mau nyoba nih :D

Biar link koment di klik bisa New Tab gimana caranya yah

Terima kasih dah letak mmg best dan terbaik TQ :)

1:55 AM

salam..
saya pasang juga di blog
terima kasih..memang menarik
Bro :)

2:24 AM

satu nak tanya..
macam mana nak hide
muka dan komen sendiri?

Tenkiu <3

@DangstarsSudah boleh klik new tab

@zulkboTak boleh nak filter komen sendiri :)

3:24 AM

@Nescafe ais

Ermm..terima kasih reply
Bro :)

11:02 AM

Wah kena cuba ni..

6:03 PM

salam Bro, Maaf ganggu lagi. widget ni pasang pun tak mahu jadi juga..

@Captain Wsalam. Cuba guna kod yang ini. Paste dalam HTML/Javascript. Tak payah edit apa-apa. Terus save

<style type="text/css">
.recent-comment{
margin-bottom:3px;
padding-bottom:2px;
background-color:#FFF;
border:solid #ddd 1px
}
.recent-comment-ico{
height:26px;
width:26px;
background-color:#FFF;
border:solid #ddd 1px;
float:left;
margin:2px 6px 0px 2px;
padding:2px
}
.recent-comment-body{
padding:3px;
font-size:11px
}
.recent-comment a,.recent-comment a:hover{
font-weight:bold;
font-weight:11px
}
</style>

<script src='http://javscript-code.googlecode.com/files/recentcommentavt.js' type='text/javascript'></script>

5:29 PM

SALAM,

tERIMA KASIH...DPT BUAT..Jadi.

yang recent post boleh terus buat pada java script mcm ni?

wslm.

@Captain Wsalam. Yang recent post tu cuba masukkan lagi sekali. Saya dah uploadkan javascriptnya dalam hosting yang lain. Harap-harap menjadi

11:50 PM

Salam bro, nak tanya skit...

1. kod java yang kau bagi dalam ruangan komen tu, boleh ubah tak jumlah patah perkataan utk komen dan saiz gambar?

2. Kalau no 1 tu tak boleh, boleh tak ubah border recent komen macam dalam kod ruangan komen tu...?

Kalau dah reply, bagitau kat ruangan fibox blog saya bleh? :D

1:29 PM

tanx!! ingat dah tade blog nie,,haha.. :D

Anonymous
9:04 PM

kotak komen ni lagi cun bolih bagi toturialnya :D

@Nescafe ais baik guna code ni..comel..hak..

11:46 AM

thanks..cantik (^_^)

@Nescafe aisTerimakasih ..Banyak

adley
4:45 PM

salam admin widget nih x boleh dipasang utk domain berbayar ke..dah try buat x dpt..

12:20 AM

thankz untuk tuto ini.. =)

Tenkiu. Working!

Terima kasih kakak, posting sangat membantu !

mcm mne nk msuk kn lgu dlm blog erk?xtaw la

salam... tqsm... dpt buat dh...

6:18 PM

Wah... mantap nih.. terima kasih tak coba dulu...

toce2...boleh buat kat blog

izin copy ilmu nya gan , makasih gan ilmu nya sukses selalu buat agan....!!

wowww ! dah pasang ! hehe

> syok-blogger.blogspot.com

Terima kasih! Intan pon dah pasang kat blog, simple and nice! Jemput singgah :)

thank you!

thanks for this, saya da pakai. ;)

trmsih rakan sekelian..cuba trus cuba hngga jaya.tqvmc

wah matep nich sob, izin pasang script nya ya sob :)

cantek bro...bnyk info bagus..tq

mantap sob, sudah saya coba dan berhasil

6:11 AM

adakah widget recent comment shoutmix ni free atau berbayar?..

Cara ganti bacgrounya gemana neh, newby

M dah pasang..Tq so much..

knpe sye pasang x mnjdi2 ek

Terima kasih,tutorial yang amat berguna bagi saya.

Thanks!!!^__^

10:02 PM

nak tanya, kenapa di blog saya tiada keluar recent comments langsung, walaupun setelah saya tukar link ke blog saya. Boleh tolong cek tak?

saya dah buat. best.

Mantab dagh...
saLam kenal..
Mampir Atuh

macam mana kalau kita tk nk guna avatar img..yp just guna bullet ... please ajar...

Salam, terima kasih...

as-salam..cantik.dan suka..baru saja pasang tadi..tqvm

12:01 PM

bro kalau pake comment yg da "Reply" kaya recent comments nt gmn caranya?
makasih

sy ambik erh :D tengsss

thanks ya sob

Nice one. Thanks

@Nescafe ais


thanks \nescafe ais....

pls visit
jendelamayaku.blogspot.com

Salam...


http://jendelamayaku.blogspot.com/


saya pasang di blog saya. tak tau berfungsi ke tak.

7:46 PM

xbfungsi la... tp last2 guna y @Nescafe ais bg coding bru ok..
http://ehhijabista.blogspot.com/

Hi all friends,
I think this blog is very good tutorials, easy to read. I believe if you join with threelas via threelas application facebook, then you will gain your ability in blogger.

What you should to do just login threelas app via https://www.facebook.com/appcenter/threelasapp

Threelas app is Facebook application of www.threelas.com, one of the best tutorials for blogger and related around the world. Popular in USA, Europe, Russia, China, Indonesia, and other countries. So, lets join the app, and learn more about blogger more deep on www.threelas.com

Sincerely yours,

Ibnu Syuhada,
Founder of Threelas

cantik sgt! Terima ksh :)

TQ for nice tips & sharing..

Terima kasih :)

kunjungi rizkyynwa.blogspot.com

canteek punya sharing..

Tq...suka sgt...
Salam perkenalan drpd : suteraungu87.blogspot.com

cayalahhhhh
menjadi!!! maseh tau...
follow blog sy gadisfrantique.blogspot.com

Sudah aku pasang,sukses.Tq very much
silahkan berkunjung di blogku
http://santrijadijutawan.blogspot.com

Post a Comment

 
Support : Creating Website | Johny Template | Mas Template
Copyright © 2011. cara buat | bina blog | tutorial | panduan blogspot | blogger info | tips - All Rights Reserved
Template Created by Creating Website Published by Mas Template
Proudly powered by Blogger