Sabtu, 22 Jun 2013

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

<!--[if IE]> <![endif] Cara pasang widget Recent comments dengan avatar (image profile) di Blogspot - cara buat | bina blog | tutorial | panduan blogspot | blogger info | tips


Home » Tutorial , widget »


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 = "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0zETJhx3nRajv8LxttqX8_y5c7nsRV10nfwwGLTO-D15sWro-g8yeapGWtK_EPssv-uaGBA8V96Jtabng3Od92tkKSIxzWaTA6pKHTkrjXfsaD_aowfphgPkBWngI2XYk9HQbKgU485c/"+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 + 71 comments


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

@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>

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

Anonymous
9:04 PM
kotak komen ni lagi cun bolih bagi toturialnya :D

adley
4:45 PM
salam admin widget nih x boleh dipasang utk domain berbayar ke..dah try buat x dpt..

Terima kasih kakak, posting sangat membantu !

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

6:18 PM
Wah... mantap nih.. terima kasih tak coba dulu...

toce2...boleh buat kat blog

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

mantap sob, sudah saya coba dan berhasil

thanks ya sob

Nice one. Thanks

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

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

Post a Comment  u

Tiada ulasan:

Catat Ulasan

Way To Serikin

Image

Sarawak

Bawah: Way2Serikin

OTW2Serikin

Image

Singgah Sekejap

Antara lokasi menarik adalah pasar Serikin,sempadan Sarawak-Kalimantan:

  • Dibuka seawal 7 pagi hingga 5 petang pada sabtu dan ahad. 6 pagi - 3 petang
  • 95% peniaga dari Kalimantan.
  • Menjual barangan yang amat murah terutama kraf tangan., pakaian
  • Jualan lain seperti pakaian,makanan,alatan memasak dan pelbagai.jenis makanan

Parking di Serikin

Public Transport dari Serikin ke Kpg Jagoi(Indonesia/Sempadan Malaysia)

Di Kenali dgn Nama 'Ojek'

PILIH SAJA Apa yang Berkenan!!

Image

Seronok walaupun Panas

Si Kecilpun tak di lupakan, bawa sama tapi awas bukan bimbang hilang, cuma wang///

Tapi ini bukan Serikin

Wah wah banyaknya

ini bukan purdah, tahan BAU

Image

Rehat duluk, Tapi retoren China/Bidayuh (NonMuslim)

Image

Rotan untuk merotan budak mengaji tak ada, maaf!!

Image

Image

Image

Nak Bakar ROTI buat sendiri, beli saja pembakarbdi sini

hias-hias biar cantik

Image

Hal Pakaian PULA

Telekung

Labuci

Batik Labuci

Tudung

Batik Kemeja

Jubah LAbucI

Hiasan

Sarung Batik

Blous

samarinda

Langsir Bersulam

Labuci Pengantin

Gambar Serikin

pasarserikin4

"pasarserikin";

pasarserikin2<

Bagi yang melancung ke Kuching , Sarawak senpena tawaran tiket murah airasia dan malindoair serta juga MAS, jangan lupa dengan nama Serikin. Serikin terletak di sempadan Sarawak-Kalimantan dan jarak perjalanan dari bandar Kuching memakan masa antara satu jam ke satu jam setengah. Kata orang, rugi kalau tak pergi Serikin, kerana barang dari Indonesia boleh di dapati dengan murah di sini. Contohnya, kain pua kumbu Sarawak, batik sarong, tikar rotan, barangan kristal dan mutiara, kain sembahyang, beg dan barangan kulit dan banyak lagi.

pasarserikin6

Kesemua peniaga di sini datangnya dari Indonesia. Mereka membayar sedikit sewa bahu jalan atau ruang pinggir rumah dari warga tempatan.

Manakala orang tempatan hanya tinggal di sini.

Peniaga dari Indonesia ini kebanyakannya pandai berniaga di sini.

Bak kata nasihat org tua, bila kita hendak membeli belah di negara orang, kenalah faham sedikit cakap orang Indon kalaupun tak pandai bercakap penuh. Di Serikin ini mereka bertutur dalam loghat Indonesia dan sekali-sekala loghat Melayu Sarawak. Ini dapat mengelak dari kena tipu harga. Kalau memang langsung tak faham bahasa Indonesia, bawalah orang yang faham..

.

pasarserikin5

KL banyak pilihan untuk shopping. Minggu ini boleh jenguk Serikin sekejap.

Kalau di semenanjung, boleh la disamakan dengan Rantau Panjang, Kayu Hitam, Wang Kelian, Padang Besar, Bukit Bunga. Tetapi walaupun konsep kedai yang sama, barang yang dijual adalah unik dan tak sama kalau nak di bandingkan dengan semenanjung. Kenapa? Tak percaya? Datang dulu baru percaya.

Pasar Serikin di buka pada hujung minggu sahaja, iaitu Sabtu dan Ahad, dari pukul 7am (lebih kurang, ada yang buka lagi awal!) hingga 2 petang. Walaupun Pasar Serikin ini terletak jauh dari bandar, dan masih banyak pokok2 yang tak ditebang, sebenarnya kawasan Serikin ini panas. Memang panas. Sebab itu digalakkan untuk datang awal pagi supaya cuaca panas tak mencekik anda bila jarum jam mencecah 11 pagi dan ke atas.

Kalau boleh sampai dalam pukul 7.30 pagi atau pukul 8 lagi bagus. Lagipun waktu ini orang tak berapa ramai, jadi jalan pun tak terlalu sesak. Sedikit amaran; jika waktu cuti sekolah atau cuti umum, pasar Serikin akan sesak dan penuh dengan umat manusia.

Lagi satu, seeloknya kunjungilah tandas dahulu sebelum ke Serikin ini, kerana kemudahan tandas di sini agak terhad. Tandas yang ada seringkali dikunjungi, anda mungkin terpaksa beratur selama 10-15 minit sebelum mendapat giliran untuk melepaskan hajat. Dan seboleh bolehnya bawalah sedikit bekalan makanan untuk mengisi perut yang lapar. Maklumlah, perjalanan dari bandar Kuching agak jauh.

Anda juga boleh berhenti di pekan Bau (sebut Baok) untuk mengisi minyak, buang minyak ataupun untuk makan. Pekan Bau terletak dalam perjalanan ke Serikin dan jaraknya kira kira 1/2 jam perjalanan dari Serikin. Kedai makanan orang Islam di Bau agak banyak pilihannya jadi tak ada masalah.

Kalau ada masa lebih tu, anda juga boleh melawat Gua Angin yang terletak kira kira 5 kilometer sahaja dari pekan Bau dalam perjalanan ke Serikin. Itupun kalau anda masih belum penat berjalan kaki dan memborong barang-barang di Serikin.

Catatan Popular