How To Display Top Commentators Widget in Blogger

Let's learn How To Display Top Commentators Widget in Blogger. As a blogger I think you are well-aware with the benefits of a top commentators widget. If you have a top commentators widget on your blog then the chances of commenting more become more and more. You can also get more engagement on your blog.
As you can see various widgets on many big blogs and websites for top commentators. Also you are thinking about how you can add such widgets on your blogger blogs. I'm here! I will do my best for you all. Here I have a great widget for you all just read below.
NOTE: This widget will show images/avatar of your blog's top commentators. You can show/hide your own profile. This is a all-in-one solution for top commentator box for blogger.
How To Display Top Commentators Widget in Blogger
Demo of Top Commentators widget by All Blog Things
Don't miss: Mashable Social Media Subscription and Following Widget for Blogger

How To Add Top Commentators Widget in Blogger

1.  Just go to your blogger "Dashboard"
2.  Select your desired blog and navigate to its "Layout" section
3.  Now click on "Add a Gadget" button ( a list of many plugins will appear )
4.  Select "HTML/JavaScript" and copy below coding than paste in HTML/JavaScript box.
<style type="text/css">
    .top-commenters {
    margin: 2px 0;
    border-bottom: 1px dotted #cccccc;
    }
    .avatar-top-commenters {
    vertical-align:middle;
    border-radius: 31px;
    }
    .top-commenters .commenters-link-name {
    padding-left:0;
    }
    </style>

    <script type="text/javascript">
    var maxTopCommenters = 5;
    var minComments = 1;   
    var numDays = 0;       
    var excludeMe = true;  
    var excludeUsers = ["Anonymous", "Umer Prince"];
    var maxUserNameLength = 45;
    //
    var txtTopLine = '<b>[#].</b> [image] [user] ([count])';
    var txtNoTopCommenters = 'No! top commentators at this time.';
    var txtAnonymous = '';
    //
    var sizeAvatar = 35;
    var cropAvatar = true;
    //
    var urlNoAvatar = "http://goo.gl/stnCzT" + sizeAvatar;
    var urlAnoAvatar = 'http://goo.gl/Vcedg3' + sizeAvatar;
    var urlMyProfile = '';
    var urlMyAvatar = '';
    if(!Array.indexOf) {
     Array.prototype.indexOf=function(obj) {
      for(var i=0;i<this.length;i++) if(this[i]==obj) return i;
      return -1;
    }}
    function replaceTopCmtVars(text, item, position)
    {
      if(!item || !item.author) return text;
      var author = item.author;
      var authorUri = "";
      if(author.uri && author.uri.$t != "")
        authorUri = author.uri.$t;
      var avaimg = urlAnoAvatar;
      var bloggerprofile = "http://www.blogger.com/profile/";
      if(author.gd$image && author.gd$image.src && authorUri.substr(0,bloggerprofile.length) == bloggerprofile)
        avaimg = author.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+"/");
      var authorName = author.name.$t;
      if(authorName == 'Anonymous' && txtAnonymous != '' && avaimg == urlAnoAvatar)
        authorName = txtAnonymous;
      var imgcode = '<img class="avatar-top-commenters" height="'+sizeAvatar+'" width="'+sizeAvatar+'" title="'+authorName+'" src="'+avaimg+'" />';
      if(authorUri!="") imgcode = '<a href="'+authorUri+'">'+imgcode+'</a>';
      if(maxUserNameLength > 3 && authorName.length > maxUserNameLength)
        authorName = authorName.substr(0, maxUserNameLength-3) + "...";
      var authorcode = authorName;
      if(authorUri!="") authorcode = '<a class="commenters-link-name" href="'+authorUri+'">'+authorcode+'</a>';
      text = text.replace('[user]', authorcode);
      text = text.replace('[image]', imgcode);
      text = text.replace('[#]', position);
      text = text.replace('[count]', item.count);
      return text;
    }
    var topcommenters = {};
    var ndxbase = 1;
    function showTopCommenters(json) {
      var one_day=1000*60*60*24;
      var today = new Date();
      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;
          }
      }
      if(json && json.feed && json.feed.entry && json.feed.entry.length) for(var i = 0 ; i < json.feed.entry.length ; i++ ) {
        var entry = json.feed.entry[i];
        if(numDays > 0) {
          var datePart = entry.published.$t.match(/\d+/g);
          var cmtDate = new Date(datePart[0],datePart[1]-1,datePart[2],datePart[3],datePart[4],datePart[5]);
          var days = Math.ceil((today.getTime()-cmtDate.getTime())/(one_day));
          if(days > numDays) break;
        }
        var authorUri = "";
        if(entry.author[0].uri && entry.author[0].uri.$t != "")
          authorUri = entry.author[0].uri.$t;
        if(excludeMe && authorUri != "" && authorUri == urlMyProfile)
          continue;
        var authorName = entry.author[0].name.$t;
        if(excludeUsers.indexOf(authorName) != -1)
          continue;
        var hash=entry.author[0].name.$t + "-" + authorUri;
        if(topcommenters[hash])
          topcommenters[hash].count++;
        else {
          var commenters = new Object();
          commenters.author = entry.author[0];
          commenters.count = 1;
          topcommenters[hash] = commenters;
        }
      }
      if(json && json.feed && json.feed.entry && json.feed.entry.length && json.feed.entry.length == 200) {
        ndxbase += 200;
        document.write('<script type="text/javascript" src="http://'+window.location.hostname+'/feeds/comments/default?redirect=false&max-results=200&start-index='+ndxbase+'&alt=json-in-script&callback=showTopCommenters"></'+'script>');
        return;
      }
      // convert object to array of tuples
      var tuplear = [];
      for(var key in topcommenters) tuplear.push([key, topcommenters[key]]);
      tuplear.sort(function(a, b) {
        if(b[1].count-a[1].count)
            return b[1].count-a[1].count;
        return (a[1].author.name.$t.toLowerCase() < b[1].author.name.$t.toLowerCase()) ? -1 : 1;
      });
      var realcount = 0;
      for(var i = 0; i < maxTopCommenters && i < tuplear.length ; i++) {
        var item = tuplear[i][1];
        if(item.count < minComments)
            break;
        document.write('<di'+'v class="top-commenters">');
        document.write(replaceTopCmtVars(txtTopLine, item, realcount+1));
        document.write('</d'+'iv>');
        realcount++;
      }
      if(!realcount)
        document.write(txtNoTopCommenters);
    }
    document.write('<script type="text/javascript" src="http://'+window.location.hostname+'/feeds/comments/default?redirect=false&max-results=200&alt=json-in-script&callback=showTopCommenters"></'+'script>');
    </script>
5. Now click on "Save" button and visit your blog.

Customization

Just look at RED text in above coding and change any thing you want. 

Change 5 with any number you want:    var maxTopCommenters = 5;
Change 1 with any number you want:    var minComments = 1;   
Change 0 with any number you want:    var numDays = 0;       
Replace true with false if you want:    var excludeMe = true;  
Change Umer Prince if you want:   var excludeUsers = ["Anonymous", "Umer Prince"];

Finall words!

So! This was a how to article on How To Display Top Commentators Widget in Blogger. Hope! you like it and use it for your blogger blogs. Don't be shy and share this article with your friends bloggers. Happy Blogging.
Use sharing buttons below!

Previous Post
Next Post

0 comments:

It's free and takes only a minute to comment and show your love for this article, even if you want anything to be changed here or created as a blog post. You can suggest by commenting below.