2012-04-06

Топ комментаторов в Blogger

топ комментаторов blogger
Я уже рассказывала вам как создать топ комментаторов, если вы используете систему комментирования от disqus. Однако в связи с модернизацией системы комментирования платформы Blogger, у многих пользователей отпала необходимость пользоваться сторонними системами.
Однако и в этом случае вы сможете установить с свой блог топ комментаторов. Для чего это требуется? Конечно же, для стимулирования читателей оставлять в вашем блоге комментарии. Сообщения с комментариями больше ценятся поисковыми системами и посетителями блога.
Как установить топ комментаторов?

..
  1. В административной панели блога зайдите о вкладку Дизайн.
  2. Добавьте гаджет HTML / JavaScript. Подробнее о том, как добавить этот гаджет со скриншотами (специально для новичков) читайте здесь.
  3. В окошко гаджета вставьте следующий код:
    <script type="text/javascript">
    var maxTopCommenters = 8;
    var minComments = 1;  
    var numDays = 0;      
    var excludeMe = true;  
    var excludeUsers = ["Anonymous", "someotherusertoexclude"];
    var maxUserNameLength = 42;
    //
    var txtTopLine = '<b>[#].</b> [image] [user] ([count])';
    var txtNoTopCommenters = 'No top commentators at this time.';
    var txtAnonymous = '';
    //
    var sizeAvatar = 33;
    var cropAvatar = true;
    //
    var urlNoAvatar = "http://2.bp.blogspot.com/-pWdg8wLsedo/UmVWQxLdwrI/AAAAAAAAEVk/-z7YgKykkuU/s1600/avatar_blue_m_96.png" + sizeAvatar;
    var urlAnoAvatar = 'http://1.bp.blogspot.com/-6B6DXCp8dek/UmVPm7D2mOI/AAAAAAAAEVU/Xz-3z2nRpUk/s1600/avatar1.png' + 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-commentators" 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="commenter-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 commenter = new Object();
          commenter.author = entry.author[0];
          commenter.count = 1;
          topcommenters[hash] = commenter;
        }
      }
      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-commentators">');
        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>
  4. var maxTopCommenters  – количество комментаторов в топе,
  5. var sizeAvatar = 33 - измените размер аватара, указав число отличное от 33.
  6. someotherusertoexclude - исключить комментаторов с перечисленными никами из топа.

19 комментариев :

Sulfurseven комментирует...

Воспользуюсь этой штукой, все отлично работает:)

RusaLena комментирует...

Спасибо! Ура, у меня получилось!

Нуша Маргарян комментирует...

Привет всем,я уже несколько дней как зарегистрировалась,пишу статьи, но так и не могу понять, меня кто-нибудь читает или нет? только цифры в статистике меняются.как это выяснить,помогите пожалуйста.

Наталия Любимова комментирует...

Спасибо огромное, поставила себе в блог, все работает.

Mycrib комментирует...

Нуша Маргарян, смотря какой статистикой вы пользуетесь. Рекомендую поставить статистику от liveinternet. Из нее вы точно узнаете откуда идут ваши посетители, сколько времени проводят они на вашей странице и многое другое.

Вы можете также установить Яндекс.Метрику или Гугл.аналитикс.

Елена Аброськина комментирует...

классная штука, только бы вот можно было исключить и 3е имя, а то мои комментарии оказались под 3мя никами

Софья Данилова комментирует...

Спасибо-спасибо!

Елена1979 комментирует...

Большое спасибо - у меня получилось!

Marilissa комментирует...

Спасибо! У меня получилось!!! (так и в себя поверить не долго;)))

tinytanya комментирует...

спасибо! получилось!

yana-hoiya комментирует...

Спасибо большое! Доступно и понятно, у меня всё получилось!

Si.A.A. комментирует...

честно говоря пытался поставить такой виджет себе, пользуясь инструкциями с других блогов, и только по вашей инструкции у меня получилось.

SvetlanaBY комментирует...

ура, наконец-то кто-то понятно написал!!! спасибо вам огромное и у меня все получилось!!!

Елена Поднебесная комментирует...

всё класно, спс всё работает! вот только один вопрос, как убрать себя из списка коментаторов?

Елена Поднебесная комментирует...

Да и ещё вопрос, как поставить фото тех кто коментирует в список?

Mycrib комментирует...

Елена, вам лучше скачать и поправить код отсюда.
Вставлять в гаджет HTML / JavaScript. Все настройки, в том числе и исключение собственных комментариев, и аватары в пояснениях к коду.

Внимание! Код разбит на страницы, поэтому, чтобы не было путаницы его лучше скачать на компьютер перед тем, как вносить изменения и вставлять в блог.

Елена, если будут вопросы - спрашивайте.

Катрин Бак комментирует...

Супер! Все работает!

Анна Гончарова комментирует...

Сколько ни пыталась вставить, бесполезно, не работает.

Иванова Наталья комментирует...

Анна, старый код теперь не актуален. Я изменила скрипт, теперь все работает.

Отправить комментарий

Комментарии, содержащие ненормативную лексику, спам, оскорбления, публиковаться не будут. Ели вы хотите опубликовать код в комментарии, то воспользуйтесь encoder HTML
Публикуя комментарии, вы соглашаетесь с политикой конфиденциальности