Entries (RSS)

вторник, 6 сентября 2011 г.

ТОП комментаторов на Blogger – 2

ТОП комментаторов на Blogger Кто самый главный человек на нашем сайте? Конечно же, это посетитель. А какой посетитель самый лучший? Тот, который не просто скользнул мышкой по сайту, а сделал что-то путное. Например, поделился своим мнением, оставил комментарий к нашей статье.

Очень важно поощрять людей, которые затрачивают своё время и пишут на нашем блоге комментарии, выделять их среди других посетителей. Например, это может быть список самых активных комментаторов, своеобразная доска почёта или ТОП комментаторов, который видят все посетители блога.

Совсем недавно мы уже разбирали подробно один вариант вывода ТОПа комментаторов на Blogger. Способ основан на использовании сервиса Pipes Yahoo. Он очень простой, но к сожалению, не всегда работает надёжно. А в чём именно заключается проблема, выяснить так и не удалось.

Сегодня вниманию блоггеров на Blogger’е предлагается ещё один вариант, без использования сторонних сервисов. Он основан на анализе RSS-ленты комментариев, на которую редко кто обращает внимание. Виджет называется “Active Commentators” ("Активные комментаторы"), его автор – minimus (http://minimusx.blogspot.com/).

Так же, как и в предыдущем решении ТОПа комментаторов, виджет “Active Commentators” устанавливается в стандартный гаджет Blogger HTML/JavaScript. Для этого надо пройти по пути: Панель инструментов / Дизайн / Элементы страницы / Добавить гаджет / Основы / HTML/JavaScript. Перед нами открывается отдельное окошко Настроить HTML/JavaScript. Вписываем в поле Название заголовок для нашего поощрительного списка. Например, “Доска почёта”, “Свои люди” или просто и со вкусом: “ТОП комментаторов”. Выделяем весь нижеприведённый код, копируем его и вставляем в основное поле виджета.

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

<!-- minimusX Active Commentators Widget. START -->
<div id="mx-ac"></div>
<script type="text/javascript">
  var maxList = 5; // Количество позиций в списке активных комментаторов
  var sFilter = "NickName"; // Фильтр комментаторов. Разделять запятыми БЕЗ ПРОБЕЛОВ!
  var baseUrl = "http://BlogName.blogspot.com/"; // URL блога.
  var commentsUrl = "feeds/comments/default?alt=json-in-script&callback=listComments"; 
  var aFilter = sFilter.split(",");
  function oCommentator (name, url, num) {
    this.name = name;
    this.url = url;
    this.num = num;
  }
  function doGetComments () {
    var container = document.getElementById("mx-ac");
    var srcComm = document.createElement("script");
    srcComm.type = "text/javascript";
    srcComm.src = baseUrl + commentsUrl;
    container.appendChild(srcComm);
  }
  function isInFilter(str){
    for (var i = 0; i < aFilter.length; i++) {
      if (str == aFilter[i]) return(true);
    }
    return(false);
  }
  var aCommentators = new Array();
  function listComments (root) {
    var feed = root.feed;
    var entries = feed.entry || [];
    var maxNum = 0;
    for (var i = 0; i < entries.length; ++i) {
      var entry = entries[i];
      var isInList = new Boolean();
      var numInList = 0;
      if ((entry.author[0].name.$t != "Anonymous") & (!isInFilter(entry.author[0].name.$t))) {
        var name = entry.author[0].name.$t;
        var url = entry.author[0].uri.$t;
        if (aCommentators.length == 0) {
          aCommentators.push(new oCommentator(name, url, 1));
          maxNum = 1;
        }
        else {
          for (var j = 0; j < aCommentators.length; j++) {
            isInList = false;
            if ((aCommentators[j].name == name) & (aCommentators[j].url == url)) {
              isInList = true;
              numInList = j;
              break;
            }
          }
          if (isInList) {
            aCommentators[numInList].num++;
            if (maxNum < aCommentators[numInList].num)
              maxNum = aCommentators[numInList].num;
          }
          else
            aCommentators.push(new oCommentator(name, url, 1));
        }
      }
    }
    var container = document.getElementById("mx-ac");
    var divFooter = document.createElement("div");
    var aFooter = document.createElement("a");
    divFooter.style.fontSize = "x-small";
    aFooter.appendChild(document.createTextNode("minimusX"));
    aFooter.href = "http://minimusx.blogspot.com";
    divFooter.appendChild(document.createTextNode("Widget by "));
    divFooter.appendChild(aFooter);
    var numList = 0;
    for (var i = maxNum; i > 0; i--) {
      for (var j = 0; j < aCommentators.length; j++) {
        if ((aCommentators[j].num == i)) {
          var br = document.createElement("br");
          var a = document.createElement("a");
          a.appendChild(document.createTextNode(aCommentators[j].name + " (" + aCommentators[j].num + ")"));
          a.href = aCommentators[j].url;
          container.appendChild(a);
          container.appendChild(br);
          numList++;
        }
        if (numList >= maxList) break;
      }
      if (numList >= maxList) break;
    }
    container.appendChild(divFooter);
  }
  doGetComments();
</script>
<!-- minimusX Active Commentators Widget. END -->

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

  • Из списка активных комментаторов исключаются анонимные, чтобы не искажать статистику. Также, можно исключить любых других комментаторов (например, себя). Если не надо никого исключать, то кавычки надо оставить пустыми. Если исключённых больше одного, то их никнеймы должны перечисляться через запятые без пробелов.
  • Адрес своего блога (URL) обязательно должен быть со значком “слэш” (косая черта) на конце.
  • Работоспособность виджета может зависеть от используемого шаблона оформления.

Количество комментариев у каждого участника списка при тестировании показывалось меньше, чем в предыдущем варианте ТОПа комментаторов. Возможно, это зависит от настроек блога, сколько элементов отдаётся в RSS-ленту. По утверждению разработчика, может анализироваться до 200 последних комментариев.

Имя каждого комментатора является активной ссылкой, которая ведёт либо на профиль в Blogger (если комментатор авторизовался в аккаунте Blogger), либо на интернет-ресурс комментатора (если в подписи использовалось поле “Имя/URL”). Это дополнительная мера поощрения активных комментаторов, побуждающая их и дальше оставаться в ТОПе.

И снова пару слов о культурной жизни. Точнее - об отечественном кинематографе. Ещё точнее - о фильме "обитаемый остров", снятом по роману Стругацких. Я не встречал прежде таких полярных мнений: одни от него в восторге, а другие только пожимают плечами. Может, всё дело в том, читали люди сам роман или нет?

Уважаемые читатели, поделитесь, пожалуйста, в комментариях своими отзывами об использовании виджета. Шагните в ТОП комментаторов блога “XXI век на Blogger”!

3 комментария:

  1. Спасибо, Евгений, за нужную информацию. Действительно,Топ Комментариев служит для стимуляции посетителей - ведь они при комментировании оставляют ссылки на свои ресурсы. Я тут же воспользовалась Вашим кодом и поставила у себя. Работает!
    С уважением, автор блога БАБУШКИН ОТВЕТ Алина Таранец.

    ОтветитьУдалить
  2. Алина, я рад, что удалось раскопать и поделиться такой полезной вещью.

    ОтветитьУдалить

А какое Ваше мнение по этому поводу?

Related Posts Plugin for WordPress, Blogger...