Как отслеживать кнопки Like, Tweet, Мне нравится в социальных сетях
В прошлой статье о том как узнать количество твитов в 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>
Ну и потом, собственно, подписаться на сами события.
//для VK
VK.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');
//для Twitter
trackTwitterHandler_ = 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.