Pages

Wednesday, May 2, 2012

Top Commentators Gadget with avatars

I had a request of this gadget in one blog comment. There are some top commentators gadgets around, most relying on a Yahoo pipe. I knew it can be done with just javascript, with no pipes. Demo: it is installed on this blog, look at the right sidebar. Hope you like it. :)

Features

You can configure the maximum number of top commentators, and minimum number of comments one must have to get on the list (to weed out the 1 comment commentators, if wanted, for example). Own nick and a list of other nicks (for example "Anonymous") can be excluded from the list. Output strings can be translated.

The Script, installing

Add a HTML/Javascript gadget to your blog, and paste the following code into it.



Script configuration

There are two CSS definitions at first, which can be changed to your liking. After that there comes javascript code and configurable variables. Here is a list of the variables and a short explanation.

maxTopCommenters: how big the list is at maximum
minComments: how many comments must top commentator have at least
numDays: from how many days (ex. 30), or 0 from "all the time" (max 500 comments)
excludeMe: true, if own comments excluded
excludeUsers: array of usernames to exclude
maxUserNameLength: if 0, don't cut; if > 4, cut lenghty usernames

txtTopLine: specifies, what is output on each line. This text can have simple variables, which are: [#], [image], [user], and [count]. [#] is substituted by position on the list, [image] by commentator's avatar image, [user] by commentator name and [count] by number of comments. Text can also contain html.
txtNoTopCommenters: what to display, if list is empty
txtAnonymous: "Anonymous" username localized, or empty if English text "Anonymous" is to be used
getTitles: if true, fetch titles from post feed; if false, titles are generated from url
blogger favico [B]
urlMyAvatar: especially if trueAvatars = false, set here the url to your avatar image
urlMyProfile: if you don't have a profile gadget on page, put your profile url here!
urlAnoAvatar: anonymous avatar, you can change from mystery man to a custom one, if you want, possibly this
urlNoAvatar: comment feed offers the icon (Blogger logo) for those Bloggers who have not set their profile image. You can override the icon with this setting (default: ).

cropAvatar: crop avatar to square (true) or stretch (false) to square
sizeAvatar: size of avatar in x and y direction, pixels

If you have very much comments (thousands and thousands of them), I suggest you to use this as "top commentators of 30 days" gadget or something like that (set numDays variable to 30), so that it won't take too long to load and calculate all the comments.

June 5th 2012: Small CSS update: Blogger changed the paddings of .profile-name-link, that's why I added this line (line 3.):
.top-commenter-line .profile-name-link {padding-left:0;}

August 1st 2017: To fix avatars, please change lines 48 and 49 (article code is updated).

36 comments:

  1. WOW! That's what I was talking about. :D
    Thank you very much. :)

    ReplyDelete
  2. Hi admin thanks a lot for this great work.
    i want to say that the gadget doesn't on my internet explorer
    thanks to answer

    ReplyDelete
  3. @Mr Admin Hi, thanks for the report on IE, reminds me that I always should test on Internet Explorer, too... Sorry about the incompatibility.

    I've updated the code in this article to work also with Internet Explorer, lines 31-36 are new (implements indexOf if it does not exist).

    ReplyDelete
  4. hehehe...it's me, top commentator :D

    ReplyDelete
  5. @MS-potilas
    thanks MS-potilas for this, and i want to make you knowing that i have the same problem with recent comment...
    thanks to answer

    ReplyDelete
  6. @Mr Admin Hi, there's some bug in IE7 emulate mode with feeds with "foreign characters". It can be fixed by editing the template and changing this:

    <meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible'/>

    to this:

    <meta content='IE=EmulateIE8' http-equiv='X-UA-Compatible'/>

    Hope it helps. :)

    ReplyDelete
  7. Very nice. This is really use the original Blogger feed URL!

    ReplyDelete
  8. Good sir...you are a genius...:)

    ReplyDelete
  9. This is great! Tried installing but my comments are also showing. How can I exclude them? Thks!

    ReplyDelete
  10. @Shirley Tay
    Hi, you probably don't have Profile gadget on your blog, so you must set variable urlMyProfile to point to your profile page, like this:

    var urlMyProfile = 'http://www.blogger.com/profile/04765892937555860461';

    ReplyDelete
  11. Thks for your prompt response! I should've included my link for your reference earlier! I'm not sure what's Profile Gadget but I think I've got one. I'm not tech savvy. Could u kindly take a look at my blog? If I don't have one, do I just copy & paste this "http://www.blogger.com/profile/04765892937555860461" inside the code? Thks so much!

    ReplyDelete
  12. @Shirley Tay
    Hi, it seems that with Google plus the profile link leads directly there, so yes, the profile link must be set. Now line 28. reads:


    var urlMyProfile = ''; // set if you have no profile gadget on page


    Change it to:

    var urlMyProfile = 'http://www.blogger.com/profile/04765892937555860461';

    That should do it.

    Another way to make it block your own comments is to change "someotherusertoexclude" to "Shirley Tay" in line 16, if the profile link thing won't work.

    ReplyDelete
  13. Thks again! Slow loading to your blog & the code doesn't load even when I clicked on Download Raw. Will come back later to get the code later & try installing :)

    ReplyDelete
  14. Hey, the first method didn't work but the 2nd one works like magic. Chk it out! Thks so much! How can I exclude 2 names? Tried putting punctuation but didn't work. Lol! Pls advise! You've been a great help!

    ReplyDelete
  15. @Shirley Tay

    Hi, good you got it working. For more exclusions, try changing the line to this:

    var excludeUsers = ["Anonymous", "Shirley Tay", "OtherName"];

    (change OtherName to the username you want). If you want still one more, then it looks like this:

    var excludeUsers = ["Anonymous", "Shirley Tay", "OtherName", "StillOtherName"];

    etc. :)

    ReplyDelete
  16. Thks a million! It's working :) U're a genius! Actually, I've been directed by Aratina Cage's blog at Last Comments. I was searching for solution to the Recent Comments which I've installed previously. It worked fine until lately, my comments are showing. Wonder if you can help? I only want to show visitors comments but not mine. Thks again!

    ReplyDelete
  17. @Shirley Tay Hi, I did a hack for my recent comments hack, maybe this is what you're after: Hack for my recent comments hack: don't show own comments. :)

    ReplyDelete
  18. I just installed this and I think mine needs some tweaking because I have no avatars or clickable links to my followers. Can you help?
    http://www.everydayunderwear.com
    I can be reached at hiyacynthia@hotmail.com for going back and forth.

    ReplyDelete
  19. @Cindy Brown
    Hi, I think the problem is with Discus commenting system, that you have on your blog. If you look at the comments feed http://www.everydayunderwear.com/feeds/comments/default?max-results=200 the author uri's are missing. So the gadget sees them as non-registered, and have nowhere to link the name/avatar.

    I think this could help you: Add Disqus Top Commentators Widget To Blogger Blog :)

    ReplyDelete
  20. The article is very useful,Thanks for sharing.

    ReplyDelete
  21. Hmm...seems not to work on my blog. http://www.phinphins.de

    The Comments should be displayed in the "Test" gadget, which is an html/js gadget.

    Even if I use your raw code, it wont show up, like the gadget isnt function correctly.

    Any suggestions?
    Thanks for your great work.

    ReplyDelete
  22. @Velarah
    Hi, when I looked your blog's html source, it seems that you have only the first 135 lines of the gadget code there, and the rest is missing.

    ReplyDelete
  23. @MS-potilas

    Nah, doesnt know, why copy & paste messed it up.

    Thanks for your help

    xxx
    velarah

    ReplyDelete
  24. Thank you so much... I was looking for it since several weeks, because I really like it!
    Viele liebe Grüße,
    Sabine

    ReplyDelete
  25. Hello :)
    Great tip, loved it! I'm using in my blog. *-*
    http://my-stories-wonderful-books.blogspot.com.br/

    ReplyDelete
  26. Can anyone tell me how can i reset or update the Top commentators after month. I wan to reset Top Commentators in my Blog...
    Blog URL is http://seoonpeak.blogspot.com

    Plz Help me....

    ReplyDelete
  27. @Shiv Kumar Gupta
    Hi,
    You can set the numDays variable:

    var numDays = 30;

    This way the gadget calculates top commenters only from the last 30 days, older comments are ignored.

    ReplyDelete
  28. Hey,
    I'm a brazilian blogger and I just came to say Thank you for create this code, it has transformed the way we can interact with our followers. :)
    So that's it. I'm really glad to know that r people like u in the world.
    Sorry for my bad english and thank u, one more time.
    xoxo,
    Nanda.
    If you feel like you want you, visit my blog:
    Nandalandia :D

    ReplyDelete
  29. Hi!Brazilian here!I loved your gadget! Thank you.
    ♥ Blog da Mirez

    ReplyDelete

Smileys :) ;) :P :D :( and ;( are converted to graphical emoticons in the blog.