Как сделать топ комментаторов в Blogger

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

cc

  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 = "https://2.bp.blogspot.com/-pWdg8wLsedo/UmVWQxLdwrI/AAAAAAAAEVk/-z7YgKykkuU/s1600/avatar_blue_m_96.png" + sizeAvatar;
    var urlAnoAvatar = 'https://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 = "https://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 = 'https://www.google.com/s2/favicons?domain=' + parseurl.hostname;
        }
      }
      if(urlMyProfile != "" && authorUri == urlMyProfile && urlMyAvatar != "")
        avaimg = urlMyAvatar;
      if(avaimg == "https://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+"/");
      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 ответов к «Как сделать топ комментаторов в Blogger»

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

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

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

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

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

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

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *