rss
twitter
  •  

Виджет комментариев ВКонтакте

| Категория: Разное |

13 комментариев

Введение

Я достаточно долго экспериментировал над виджетом комментариев вконтакте и пришла пора поделиться с вами своими знаниями. О плюсах рассказывать не буду – они и так хорошо расписаны разработчиками на странице подключения виджета. Единственное, что некоторые из них немного утратили свою актуальность после окончательного копирования виджета комментариев фейсбука, например вирусность. Поскольку многие теперь не будут «транслировать комментарий на стену и в ленту друзей» убрав галочку, эффективность данного пункта значительно снижается. Все же остальное – привычность, отсутствие надобности регистрироваться и вводить лишние данные кроме самого комментария – действительно очень неплохо.
Но не все так хорошо, как хотелось бы. Сколько слежу за этим виджетом, время от времени с ним происходят какие-то проблемы – то комментарии исчезают, то дизайн полностью изменяется (из за чего «едет» и дизайн на сайте), то callback() функция не работает… к этому еще добавить конфликты с разными браузерами и JS-фреймворками, неиндексируемость комментариев и получим полную картину. Короче говоря, над виджетом идет постоянная работа, но испытания почему-то проводят не на локальном сервере, а сразу на пользователях =)

Кому рекомендован виджет

Из-за описанных выше проблем рекомендую 10 раз подумать перед установкой и даже после этого не устанавливать данный виджет без особой необходимости. :-D Это, например, HTML-сайты, которые и хотели бы предоставить возможность пользователям высказаться, но не могут это сделать другими способами. Или сайты, ориентированные исключительно на детскую и молодежную тематику – сегодня каждый подросток имеет аккаунт в контакте, чего нельзя сказать о более взрослой аудитории.

Установка виджета

Подробно описывать процесс установки тоже не буду, тем более что для разных CMS он может различаться, – остановлюсь лишь на самом главном. Для начала заходим на страницу подключения виджета и выбираем «подключить новый сайт».
Название сайта – любое, это исключительно для себя.
Адрес сайта – полный адрес вашего сайта с указанием протокола, например: http://chiliec.ru/.
Основной домен сайта – просто домен, без лишних символов, например: chiliec.ru Здесь главное не дописать слеш «/», поскольку он дописывается сам при копировании адреса сайта.

Нажимаем сохранить и копируем код на сайт, в соответствие с комментариями.

Коллбек-функция onChange

Наконец-то можно приступить к самому интересному. Рассмотрим процесс записи комментариев и их количества в базу данных, чтобы, например, показывать наиболее комментируемые статьи или в последствие оказаться от использования виджета с минимальными потерями. Просто приведу код:

<script type="text/javascript">
VK.Widgets.Comments("vk_comments", {limit: 30, width: "500", autoPublish: 0, onChange: addComment});    
 
function getXmlHttp(){
  var xmlhttp;
  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;
    }
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}
 
function addComment(num, last_comment, date, sign) {
var str=document.URL;
var patt=/id=d/i
var result=patt.exec(str); // из URL получаем id новости
 
var xmlhttp = getXmlHttp()
xmlhttp.open('GET', 'update_comments.php?num='+num+'&'+result+'r='+Math.random(), true);
xmlhttp.onreadystatechange = function() {
  if (xmlhttp.readyState == 4) {
     if(xmlhttp.status == 200) {
       //alert(xmlhttp.responseText);
         }
  }
};
xmlhttp.send(null);
    }                
</script>

<?php 
require("wp-config.php"); // сюда надо вписать путь к файлу подключение к MySQL
 
if (isset($_GET['id']) && isset($_GET['num'])) {
 
$id = mysql_real_escape_string(htmlentities($_GET['id'])); 
$num = mysql_real_escape_string(htmlentities($_GET['num'])); 
 
mysql_query("UPDATE `wp_posts` SET `vk_comments`='".$num."' WHERE `id`='".$id."'") or die(mysql_error()); 
 
echo"$num";
 
} else { echo"Ошибка!"; }
 
?>

Кроме такого способа сохранения, есть еще способ подписаться на события с помощью VK.Observer:

VK.Observer.subscribe('widgets.comments.new_comment', function(num, last_comment, date, sign){
  // При добавлении нового комментария сработает эта функция 
  // num - количество комментариев
  // last_comment - текст последнего комментария
  // date - текущая дата в формате ISO 8601 (например, 2004-02-12T15:19:21+00:00)
  // sign - контрольная сумма md5 от конкатенации 4х строк: api_secret, date, num, last_comment.
  console.log(num);
  console.log(last_comment);
  console.log(date);
});

Пока это всё =)



Виджет комментариев ВКонтакте: 13 комментариев

А не проще добавить сайт в свою страницу и в аддурилку?

Вы о чем? *CRAZY*

У меня вот здесь http://www.allremont59.ru/home/ есть добавлялка как в контакт так и на другие соцсети – ты про такой же виджет говоришь?

Нет, я говорю про виджет комментариев – пример есть по ссылке на странице подключения =)

Очень полезен для ресурсов – направленность которых аудитория вКонтакте, хороший выхлоп для ресурсов со статусами, картинками, фильмами и т.д….

заинтерисовало! меня как раз попросили чтото такое добавить! а я с контактом неочень плотно работаю! прийдется! спасибо!

Здравствуйте. У меня на сайте примерно также, событие нового коммента обрабаывается через Observer. Вопрос: как можно получить имя и id пользователя ВК, который отправил коммент?

Насколько я понимаю – никак :( Все что передается в него – это количество комментариев, текст последнего комментария, дата и контрольная сумма.

А можно ли узнать количество комментариев напрямую через вконтакте (например по заданной ссылке), если нет то как доработать код, чтобы количество комментариев было общей от вконтакте, фейсбука и сайта

Количество комментариев по заданной ссылке узнать нельзя. Если вы хотите сделать общее количество комментариев сайта, контакта и фейсбука – придется сохранять количество комментариев от каждого из них в одно место (в базу, можно в стандартные таблицы комментариев для сайта или в отдельные, но тогда придется править еще и код выборки их количества). Для контакта я описал как их сохранять, для фейсбука тоже есть решения – гугл или знакомый программист вам в помощь. =)

Кругом контакт)
Я стараюсь оставлять комменты, если есть возможность, то с помощью фэйсбука.

Не встречали такого виджета от твиттера? Очень надо…На сайте у них не обнаружил, есть только какие-то виджеты для трансляций…

У твиттера нету виджета комментариев. Зато есть другие, вот посмотрите, может что-то и заинтересует ;)
http://twitter.com/about/resources/widgets