Widget komentar blogger dengan filter admin

Sobat blogger, sangat tidak lucu kan kalo di widget recent comment yg muncul kebanyakan malah nama kita sendiri sebagai blog owner. Ya mau gimana lg karena kita baru sempat membalas komentar setelah beberapa lama gak online, sedangkan widget recent comment pasti akan me-list komentar2 terakhir dr blog.. #WTF


Widget komentar atau recent comment dengan filter admin ini saya comot langsung dari widget yg ada di home nextbiker.com . Silahkan diedit sendiri css dan setingnya . Untuk penempatan CSS bisa dijadikan satu dalam widget atau dipisah .

<style type="text/css">
.recent-comment        { margin:6px 0px 10px 4px;}
.recent-comment-admin  { background-color: #F8F1DF; }
.recent-comment-ico    { 
    padding: 2px;
    background: #fefefe;
    -webkit-box-shadow: 0 1px 1px #ccc;
    -moz-box-shadow: 0 1px 1px #ccc;
    box-shadow: 0 1px 1px #ccc;
    float: left;
    margin: 0 6px 0 0;
    position: relative;
    overflow: hidden;}
.avatarRound {
   -moz-border-top-left-radius: 6px;
   -webkit-border-top-left-radius: 6px;
   border-top-left-radius: 6px;
   -moz-border-bottom-right-radius: 6px;
   -webkit-border-bottom-right-radius: 6px;
   border-bottom-right-radius: 6px;
}
.recent-comment-header {}
.recent-comment-body   { 
   padding-right: 4px; 
   font-size: 90%;
   color:#666;
   font-style:italic
}
.recent-comment-footer { 
   font-size: 85%; 
}
</style>


Edit value dari // CONFIG START: sampai // CONFIG END atau teks yg berwarna hijau

<script type="text/javascript">

    // CONFIG START:
    var numRecentComments = 6;
    var numPerPost = 2; // max comments per post (to try) or 0
    var maxCommentChars = 0;
    var maxPostTitleChars = 30; // if 0, use full post title
     
    var txtWrote = '<!--wrote-->';
    var txtMore = '<!--readmore-->';
    var txtTooltip = '[title]';
    var txtAnonymous = 'Anonym'; // 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 = 30;
    var urlNoAvatar = "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5ptnZ0qOmKagvCy5JGt6HUhP2fBEvXumJQViy74bpLnPLz4zY0Ljn4IareiCPp08wlFBLY_HG0Wu8B2PLbEIb6FgQBXQSWq77EBB1ZNpB6D5kX3AU8hwcbGkJ3Po1qJK3pIyov3wnXNE/"+sizeAvatar+"/avatar_blue_m_96.png";
    //
    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 = /[dates+(.+?)]/.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(/[dates+(.+?)]/, 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.author[0].name.$t=="Admin Nextbiker") 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]++;
              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(entry.author[0].name.$t=="Admin Nextbiker") continue; 
        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(//sdd+-c//, "/"+newsize+"-c/");
          if(cropAvatar) newsize+="-c";
          avaimg = avaimg.replace(//sdd+(-c){0,1}//, "/"+newsize+"/");
          if(authorName == 'Anonymous' && txtAnonymous != '' && avaimg == urlAnoAvatar)
            authorName = txtAnonymous;
          var imgcode = '<img class="avatarRound" height="'+sizeAvatar+'" width="'+sizeAvatar+'" title="'+authorName+'" src="'+avaimg+'" />';
          if (authorUri!="") imgcode = ''+imgcode+'';
          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 avatarRound'+clsAdmin+'">'+imgcode+'</div> ' + txtHeader + ' <br/>@ <a style="font-weight:small;text-transform:lowercase;color:#CFEC45;" title="'+tooltip+'" href="' + href + '">' + tooltip + '</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>


NOTE :

** Nama blog owner / admin case sensitive yg artinya huruf besar dan kecil berpengaruh.
**  Tidak semua lambang alay / special character untuk nama blog owner bisa bekerja .
** Ganti teks hijau dengan yang sesuai .
Comments
0 Comments
:) :( ;) :D ;;-) :-/ :x :P 7:) :(( :))

=)) :-t 2:-P =D7 \m/ :-q :-bd

komentar bisa dengan kode smiley diatas