В прошлой статье о том как узнать количество твитов в Twitter, лайков и share в facebook, ВКонтакте, Одноклассниках, Google+ на PHP я сказал, что была необходимость выводить суммарное число лайков трёх соц. сетей. Помимо этого необходимо было, чтобы в случае, если человек лайкнет/дизлайкнет страницу, число изменилось. То есть, нобходимо отслеживать кнопки Like, Tweet, Мне нравится в социальных сетях.
Если покопаться в документации соответствующей соц. сети, то можно найти информацию о том, как подписаться на события кнопок. Решил выложить тут рабочий вариант, если кому-то лень копаться, да и себе на будущее.
Естественно, сначала надо инициализировать сие дело.
//для VK<script type="text/javascript" src="http://userapi.com/js/api/openapi.js?49"></script><script type="text/javascript">VK.init({ apiId: идентификатор_приложения, onlyWidgets: true });</script>//для FB<script src="//connect.facebook.net/en_US/all.js"></script>//Twitter<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>Ну и потом, собственно, подписаться на сами события. //для VKVK.Observer.subscribe('widgets.like.unliked', function(likeCount) {// если убрали нажатие с кнопки "мне нравится"}); VK.Observer.subscribe('widgets.like.liked', function(likeCount) {// если нажали на кнопку "мне нравится"});//можно отписатьсяVK.Observer.unsubscribe('widgets.like.unliked');VK.Observer.unsubscribe('widgets.like.liked');//для FB//opt_pagePath адрес страницыFB.Event.subscribe('edge.create', function(opt_target) {//если нажали на кнопку "рекомендовать"});FB.Event.subscribe('edge.remove', function(opt_target) {// если убрали нажатие с кнопки "рекомендовать"});//можно отписатьсяFB.Event.unsubscribe('edge.create');FB.Event.unsubscribe('edge.remove');//для TwittertrackTwitterHandler_ = function(intent_event) { var opt_target; if (intent_event && intent_event.type == 'tweet' || intent_event.type == 'click') {var socialAction = intent_event.type + ((intent_event.type == 'click') ? '-' + intent_event.region : ''); //тип нажатия//ну, как пример, проверка на то, твиттнули лиif(socialAction =='tweet'){ //если в модальном окне нажали "твиттнуть", то можно тут обработать }//аналогично можно обрабатывать нажатие по числу твиттов и т.д. }};intent_handler = function(intent_event) { trackTwitterHandler_(intent_event);};twttr.events.bind('click', intent_handler);twttr.events.bind('tweet', intent_handler);//можно отписатьсяtwttr.events.unbind('click');twttr.events.unbind('tweet');Можно и для других соц. сетей такое сделать, я думаю. Для mail.ru, чтобы отследить событие mailru.app.events.like используется, вроде как, mailru.events.listen.
Добрый день!
Стоит задача вести учет голосов VK в базе сайта. Нужно сделать это максимально безопасно, чтобы, по возможности, исключить накрутку. Таким образом я не могу посылать простой GET запрос в обработчике клика на кнопку (чтобы по запросу обрабатывать клик), так как в этом случае возможно прямое обращение к URL обработчика.
Не могли бы вы подсказать решение?
Я решал подобное кэшем.
То есть, раз в 10 минут запускался скрипт, который получал количество лайков по всем страницам и сохранял в базе.
Как из php узнать количество твитов в Twitter, лайков и share в facebook, ВКонтакте, Одноклассниках, Google+.
Если же хотите через js по клику лишь… А чем вам GET запрос не угодил? Даже, если попытаются накрутить.
Вы просто проверяйте в php поле Referer — откуда пришёл запрос. И обрабатывайте лишь те запросы, которые были с вашего сайта. Тогда не накрутят.
Можно подделать реферер)
А если на странице несколько кнопок «Нравится» вконтакте, как узнать, по какой из них было нажатие?
извините не думал что после отправки сообщения отображаться все будет не как код а как страничка. Подправте и ссылка в коде на ютуб просто первую попавшуюся вставил.
Я вам лучше на мыло напишу)
Для отображения кнопки надо:
<a name="twitter.com/share" class="twitter-share-button" data-count="horizontal" data-lang="ru" rel="nofollow">Tweet</a> <script type="text/javascript" src="http://platform.twitter.com/widgets.js" > </script>
похоже я нашел то что искал…)
ну вообще вы даете докопаться так глубоко)класс
У меня только один вопрос: Наверняка вы слышали про плагин «плати лайком», хочу сделать такую свою) на странице есть несколько постов у каждого есть кн. «поделится», когда наж. откр-ся всплывающее окно и там наж. кн. [поделится]. хотелось бы на эту кн. [поделится] создать событию, как только нажмет показать остальное и наче нет. Вы написали событию пр:
VK.Observer.subscribe(‘widgets.like.liked’, function(likeCount) {
06.// если нажали на кнопку «мне нравится»
07.});
Где «06.// если нажали на кнопку «мне нравится»» — сюда пишешь, например [показать остальной текст], да?
Ну, в 06 можно любой JS засунуть. Сработает после того, как человек лайкнет запись.
КЛАСС!!!! Я СЧАСТЛИВ)))) СПАСИБО ЗА КОД!) извиняюсь за такое поведения, я просто долго мучился)))
Рад, что помогло)
Рискну и все таки спрошу у вас:
VK.Observer.subscribe(‘widgets.like.liked’, function(likeCount) {
06.// если нажали на кнопку «мне нравится»
07.}); — пользователь просто нажал like
VK.Observer.subscribe(‘widgets.like.shared’, function(likeCount)
{
//Код
}); — Пользователь не то что нажал ну и еще рассказал друзьям
У меня эти не работает, оказывается у меня не VK.Widgets.Like а VK.Share.button, и пробовал так:
VK.Observer.subscribe(‘Share.button.shared’, function(likeCount)
{
alert(‘Класс!!!’);
});
Но ответа не получаю. Подумал может вы знаете как на share действовать?
Марат, я что-то не встречал API по VK.Share.button, может и нельзя.
Только VK.Observer содержит методы для реакции на возникающие в ходе работы платформы события.
Аха, все понял, всё меняю кнопки на like) Спасибо
Так если от нажатия кнопки Like вконтакте, ссылка не появляется нигде — какой может быть положительный эффект для сайта? Нужно использовать только Share ?
Ну в целом да, Like как таковой ничего положительного сайту не даёт. Это так, пузомерка)
Share лучше использовать. И Share, вроде как, помимо того, что шарит ещё и лайкает сразу)
Отлично! Спасибо за код. Не подскажете, как отловить событие share для Share.button (Поделится ссылкой)? С Мне Нравится все отлично работает. А вот о Share в api ничего нет..
При нажатии на кнопку «Мне нравится» виджет передаёт события
widgets.like.likedиwidgets.like.unliked.Аналогичным образом передаются события
widgets.like.sharedиwidgets.like.unsharedпри нажатии на галочку «Рассказать друзьям».Так что, подпишитесь на
widgets.like.sharedиwidgets.like.unsharedи сможете отловить.Спасибо за ответ! Но я не тот виджет имел ввиду. Я спрашивал за http://vk.com/developers.php?oid=-1&p=Share
VK.Share.button
Не могу найти никакой информации по поводу подписки на события VK.Share.button =/
Добрый день!
Такая ситуация есть две кнопки like. Мне нужно, чтобы при нажатии только одной кнопки like возникало событие liked и unliked.
Повесить на нужную кнопку обработчик.
Каким образом? ведь не где не указывается id кнопки
Здравствуйте! Вот есть скрипт на Share (кнопка поелиться) _http://vk.com/js/api/share.js?11 , есть ли здесь возможность отследить, была ли нажата кнопка поделиться? Чтото не могу сам разобраться.
Вызов кнопки document.write(VK.Share.button(false,{type: «round_nocount», text: «Рассказать на стене»})); а как отследить нажатие?