Комментирование статей на сайтах рунета (Вконтакте)

Главные вкладки

Аватар пользователя KaMaToZzz KaMaToZzz 3 сентября 2010 в 10:17

Интересует будет ли какой либо модуль под эту тему?
http://vk.com/developers.php?o=-1&p=Comments

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

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

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

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

Приглашаю Вас прочитать полное описание виджета.
В пункте Все преимущества виджета комментариев ВКонтакте я постарался раскрыть причины, по которым данное нововведение может положить начало революции в рунете. Большая часть этих преимуществ уникальна не только для российского, но и для мирового интернета.

Думаю, по этой причине ряд популярных российских интернет-СМИ уже устанавливает виджет комментариев на своих страницах. Надеюсь, что со временем мы сможем общаться без регистрации на большинстве русскоязычных сайтов.

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

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

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

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

В контакте с Вами,
Павел Дуров

Комментарии

Аватар пользователя KaMaToZzz KaMaToZzz 3 сентября 2010 в 10:21

А больше всего интересует куда именно вставить весь этот код, дабы и в story и в page и votes были комментарии от Вконтакте?

<!-- Put this script tag to the <head> of your page -->
<script type="text/javascript" src="http://vkontakte.ru/js/api/openapi.js?9" charset="windows-1251"></script>

<script type="text/javascript">
  VK.init({apiId: ВАШ ID приложения, onlyWidgets: true});
</script>

<!-- Put this div tag to the place, where the Comments block will be -->
<div id="vk_comments"></div>
<script type="text/javascript">
VK.Widgets.Comments("vk_comments", {limit: 10, width: "496"});
</script>

Аватар пользователя sadmin sadmin 3 сентября 2010 в 10:26

"KaMaToZzz" wrote:
А больше всего интересует куда именно вставить весь этот код
"KaMaToZzz" wrote:
Put this script tag to the of your page..

похоже на шутку

Аватар пользователя andriy.olischuk andriy.olischuk 3 сентября 2010 в 11:10

Не смотрел подробности, но поступил бы так (в самом простом варианте интеграции их комментов):
1. Отключил стандартное комментирование материалов друпала.
2. Написал бы небольшой модуль, который в хуке ноде_апи выводил бы вот этот JS (прицеплял бы к тексту).

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

Аватар пользователя MaNaX MaNaX 3 сентября 2010 в 11:55

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

Аватар пользователя KaMaToZzz KaMaToZzz 3 сентября 2010 в 12:09

Извиняюсь но в коддинге не силен, куда можно направить запрос о написание подобного модуля?
Не знаете ли вы автор Vk open api (модуль для друпла) русский ?)

Аватар пользователя sadmin sadmin 3 сентября 2010 в 12:37

"KaMaToZzz" wrote:
не шутка....я все это вставил в node.tpl.php

как вариант сделать tpl файлы для story и votes
но для организации прав скорее всего потребуется модуль

"andriy.olischuk" wrote:
Не смотрел подробности, но поступил бы так (в самом простом варианте интеграции их комментов):
1. Отключил стандартное комментирование материалов друпала

особенно актуально будет для сайтов ориентирующихся на контакт

Аватар пользователя mihail.nosov mihail.nosov 6 сентября 2010 в 5:45

Этот виджет можно использовать как замену стандартного модуля комментариев.. Не оставлять же 2 поля комментирования?

Но при таком раскладе, мы запрещаем оставлять комментарии тем, кто не зарегистрирован "вконтакте". Хотя можно javascript написать, который будет позволять выбрать, каким способом оставить комментарий Smile

Аватар пользователя AlexV AlexV 7 сентября 2010 в 0:11

А у меня получилось! но не до конца.

Чтобы был виден кусок с комментариями контакта:
1) сначала "подружил" сайт с контактом (http://www.drupal.ru/node/45088, заодно и удобная форма регистрации);
2) потом вот с этой (!) страницы: http://vkontakte.ru/developers.php?o=-1&p=%C4%EE%EA%F3%EC%E5%ED%F2%E0%F6...
сделал следующее:
"1. В тег страницы Вашего сайта необходимо добавить следующий код:..."
- это вставил в новый блок, с форматом ввода PHP

А это ("2. На странице сайта необходимо добавить следующий блок кода внутри:") и Пример использования (не забудьте там 111 поменять на ID приложения) воткнул на желаемые страницы (тут http://studprofcom.com/node/650 и тут http://studprofcom.com/node/168). Вроде работает.

Но есть косяки:
- почему-то коммент на обеих страницах сделался одинаковый (т.е. блок для комментов на разных страницах один и тот же...)
Что с этим делать? Неужели для каждой страницы нужно новое приложение делать?
Жду вашей проверки и помощи

Аватар пользователя AntNick AntNick 7 сентября 2010 в 9:23

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

<div id="vk_comments"></div>
<script type="text/javascript">
window.onload = function () {
 VK.init({apiId: код-приложения, onlyWidgets: true});
 VK.Widgets.Comments('vk_comments', {width: 500, limit: 15});
}
</script>

Там в 5й строчке еще в конце какие-то 321 вписаны были, я их убрал. Скорее всего это дополнительный идентификатор страницы. AlexV, может это из-за них у тебя одинаковые получились? Т.к. у меня на разных страницах свои комментарии, раздельные.

Аватар пользователя KaMaToZzz KaMaToZzz 7 сентября 2010 в 10:43

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

<div id="vk_comments"></div>
<script type="text/javascript">
window.onload = function () {
 VK.init({apiId: код-приложения, onlyWidgets: true});
 VK.Widgets.Comments('vk_comments', {width: 500, limit: 15});
}
</script>

Там в 5й строчке еще в конце какие-то 321 вписаны были, я их убрал. Скорее всего это дополнительный идентификатор страницы. AlexV, может это из-за них у тебя одинаковые получились? Т.к. у меня на разных страницах свои комментарии, раздельные.

А нужное место - это где?
Куда впихнули то?

Аватар пользователя AntNick AntNick 7 сентября 2010 в 11:05

Я блок создал отдельный. И его вывел.
Только сейчас нашел косяк: у меня сайт с www и без работает, так если оставить комментарий на странице без www, то на этой же странице с www его не будет...
Тут, я думаю, надо идентификатор страницы тогда использовать. + он мне нужен будет, т.к. у материала несколько вкладок и чтоб Контакт не считал их разными страницами. Только вопрос, как в блоке вывести id ноды?
<?php print $node->nid; ?>
- че-то не хочет ничего выводить. Что нужно написать, чтобы скрипт выводил просто, например, 42?

Аватар пользователя AntNick AntNick 7 сентября 2010 в 11:39

В общем, не знаю, насколько это все правильно, но блок у меня получился таким:

<?php
if (arg(0) == 'node' && is_numeric(arg(1))){
    $nid = arg(1);
}
?>
<div id="vk_comments">&nbsp;</div>
<script type="text/javascript">
window.onload = function () {
 VK.init({apiId: КОД, onlyWidgets: true});
 VK.Widgets.Comments('vk_comments', {width: 280, limit: 10}, <?php print $nid; ?>);
}
</script>

Посмотрите, кто разбирается в этом, правильно ли так получать id материала? Но вроде работает. Отображается сбоку на странице самого материала и отдельной страницы комментариев (модуль Talk).

Аватар пользователя dangler dangler 5 сентября 2012 в 14:00

а оповещения на почту о новых комментариях возможно как-нибудь получить? как-нибудь отследить это событие?

я вот попробовал дописать в скрипт виджета функцию:

<div id="vk_comments"></div>
<script type="text/javascript">
VK.Widgets.Comments("vk_comments", {limit: 10, width: "496", attach: "*", onChange: saveComment, autoPublish: 0});
function saveComment(num, last_comment, date, sign){
    $.post("http://www.mysite.ru/sites/all/themes/moyatema/mailru.php",{
         type: 'vkontakte',
         num: num,
         last_comment: last_comment,
         date: date,
         sign: sign,
    });
}
</script>

А уже в этом mailru.php - отправку письма на почту:

<?php

$to 

"mymail@mail.ru";
$subject "комент от посетителя сайта";
$message "пришел комент";
mail ($to,$subject,$message) or print "Не могу отправить письмо.";

?>

но что-то не работает, не отправляет письмо.. как-нибудь можно "поймать" событие добавления нового коммента и исполнять после него php-код?

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 5 сентября 2013 в 5:03

"dangler" wrote:
а оповещения на почту о новых комментариях возможно как-нибудь получить? как-нибудь отследить это событие?

Ну зачем так сложно?
Читай тут http://rxb.name/blog/vypolnit-deystvie-posle-layka-28, способ аналогичный.
Я хочу написать модуль, который текст коммента сохранять в БД будет

Аватар пользователя dangler dangler 5 сентября 2012 в 16:36

уф.
сидел сейчас, колдовал над вашим способом, вроде переделал для моего случая (у вас ведь лайк, а не коммент, и всплывает див, а не отправляется письмо)
Получилось так:

<div id="vk_comments"></div>
<script type="text/javascript">
VK.Widgets.Comments("vk_comments", {limit: 10, width: "496", attach: "*"});
</script>
<script type="text/javascript">
                        VK.Observer.subscribe('widgets.comments.commented',function(){
                                $.post("http://www.moysait.ru/sites/all/themes/moyatema/mailru.php");
                        }
                );
                </script>

я только не совсем уверен на счет "widgets.comments.commented", это я написал по аналогии с вашим "widgets.like.liked"

и то ли из-за этого, то ли из-за чего еще, но что-то не работает, не отправляет письмо, не обращается к файлу mailru.php ((

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 5 сентября 2012 в 16:40

Битва экстрасенсов на ТНТ, если вы хотите колдовать
Здесь программирование и мануалы.
Рабочий пример будет примерно такой:

VK.Observer.subscribe('widgets.comments.new_comment', function(num, last_comment, date) {
           $.post("/sites/all/themes/moyatema/mailru.php");
        }
);      

Так же, напоминаю, о существовании Firebug, позволяет делать без магии многие вещи

Аватар пользователя dangler dangler 5 сентября 2012 в 17:15

RxB, спасибо!

ну так, я над мануалами и колдовал 2 часа Smile

читал это http://www.phpsql.ru/jquery-post-function
и это: http://vk.com/developers.php?oid=-1&p=VK.Observer
и это
ну и ваш сайт, прежде, чем сделать.

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

Поэтому вот чтение не до конца помогло, пришлось колодовать. )

А этот Firebug -насколько я где-то читал, что в хроме если делать "просмотр кода элемента", то выходит окошко с похожим на Firebug функционалом. Уж не знаю, насколько это правда, но найти лишний отступ в цсс почти всегда помогает.
А вот помочь написать jQuery код - и не думал, что он такое может

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 5 сентября 2012 в 17:16

"dangler" wrote:
кстати, вконтакте я сколько искал, но не нашел названий событий, которые нужно подставлять в Observer. Конкретно new_comment который вы мне сейчас подсказали.

http://vk.com/developers.php?o=-1&p=%C4%EE%EA%F3%EC%E5%ED%F2%E0%F6%E8%FF...
События

Аватар пользователя dangler dangler 5 сентября 2012 в 17:37

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

И, к сожалению, но код все равно не работает, даже предложенный вами.
я пробовал и относительный, как вы делали, и абсолютный путь к файлу mailru.php, пробовал менять $.post на $.get - но все без толку - не хочет он работать..

Аватар пользователя dangler dangler 6 сентября 2012 в 13:51

а почему все-таки не работает, не понятно?

Хм, и сейчас посмотрел вашу тестовую страницу http://rxb.name/examples/likes/
, понажимал - и что-то не всплывает у меня слой ( ни в хроме, ни в мозиле..

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

Сведения об ошибке на веб-странице
Сообщение: Предполагается наличие объекта
Строка: 73
Символ: 5
Код: 0
URI-код: http://rxb.name/examples/likes/

напоминаю - я сейчас говорю о вашей странице, а не о своем сайте. тк если ваш пример не работает, то мой и подавно не будет )

Аватар пользователя dangler dangler 6 сентября 2012 в 14:26

о, да, теперь в файрфоксе и хроме заработало - появляется фраза.
а ие что-то совсем сломался - закрывается при переходе на любой сайт )

а что именно вы исправили, может и мне попробовать?

а то у меня оповещение о комментариях по-прежнему не работает..

Аватар пользователя dangler dangler 6 сентября 2012 в 15:57

ясно.. может, и мне поправить надо.

поставил сейчас этот ваш Firebug, пытался отследить ошибки..
тестировал даже не мою отсправку письма, а скопировал ваш код с новым слоем, чтобы так же появлялся текст, как у вас. только не при лайке, а при новом коменте.
и увидел, что оказывается у меня выдает ошибки, во-первых:

jQuery.proxy is not a function
this.$exposed_form.once(jQuery.proxy(this.attachExposedFormAjax, this));
ajax_v...?m9vs2g (строка 61)

но это вроде не относится к теме. и вторая, более важная:

VK.Widgets is undefined
VK.Widgets.loading(obj, false);
openapi.js?49 (строка 1342)

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

А когда оставляешь новый комментарий, то выходит еще ошибка:

VK.Observer is undefined
VK.Observer.publish.apply(VK.Observer, args);
openapi.js?49 (строка 1339)

то есть обсервер не определен.
видимо из-за этого, код у меня не работает - текст не появляется, слой остается скрытым..

а почему не определен - непонятно. ведь я зарегистрировался в виджетахвконтакте, новые коменты появляются, а у vk.widgets почему-то не определен..

Аватар пользователя NSX NSX 20 ноября 2014 в 21:39

ПОдскажите куда вставить код чтоб он отображался после основных комментариев!

Сейчас стоит в Блоке в Содержимом..