Голосование на сайтах с помощью социальных сетей
При создании сайта Я люблю ННГУ, одним из требований заказчика было проведение конкурса красоты с голосованием через социальные сети. Под анкетой каждого конкурсанта, были расположены кнопки социальных сетей (facebook, vkontakte, twitter), при нажатии на любую из которых у данного конкурсанта увеличивалось общее число голосов. Преимущество такого вида голосования очевидны — отсутствие возможности накрутить голоса сменой ip-адреса или очисткой coockies, размещение выбора проголосовавшего на его страницах в социальных сетях, что ведет к увеличению посещаемости сайта и более активному голосованию. Недостатки конечно тоже есть. Накрутить голоса все-таки можно, используя ботов или покупку голосов, хотя это довольно просто отследить.
Итак для подсчета голосов необходимо размещение кнопок социальных сетей (код для wordpress, т.к. сайт сделан на нем):
<div class=&quot;b_voices&quot;>
<span>всего голосов:</span><br />
<b class=&quot;voices-<?php the_ID(); ?>&quot;></b>
</div>
<div>
<?php
$pageURL = get_permalink ();
echo &#039;<iframe src=&quot;http://www.facebook.com/plugins/like.php?href=&#039;.$pageURL.&#039;&amp;send=false&amp;layout=button_count&amp;width=110&amp;show_faces=true&amp;action=like&amp;colorscheme=light&amp;font&amp;height=21&quot; scrolling=&quot;no&quot; frameborder=&quot;0&quot; style=&quot;border:none; overflow:hidden; width:140px; height:21px;&quot; allowTransparency=&quot;true&quot;></iframe>&#039;;
?>
</div>
<div><a href=&quot;http://twitter.com/share&quot; class=&quot;twitter-share-button&quot; data-count=&quot;horizontal&quot;>Tweet</a><script type=&quot;text/javascript&quot; src=&quot;http://platform.twitter.com/widgets.js&quot;></script></div>
<div id=&quot;vk_like-<?php the_ID(); ?>&quot;></div>
<script type=&quot;text/javascript&quot;>
VK.Widgets.Like(&quot;vk_like-<?php the_ID(); ?>&quot;, {type: &quot;button&quot;}, <?php the_ID(); ?> );
</script>
<script type=&quot;text/javascript&quot;>
sum(&#039;<?php the_permalink(); ?>&#039;,&#039;<?php the_ID(); ?>&#039;)
</script>
sum — javascript-функция подсчета голосов:
function sum($url, $id){
var counter = 0;
/* facebook */
$.getJSON(&#039;http://api.facebook.com/restserver.php?method=links.getStats&amp;amp;urls=&#039; + $url + &#039;&amp;amp;callback=?&amp;amp;format=json&#039;, function(data) {
counter = counter + data[0].like_count;
$(&#039;.voices-&#039;+$id).html(counter);
});
/* vkontakte */
$.getJSON(&#039;https://api.vkontakte.ru/method/likes.getList?type=sitepage&amp;amp;owner_id=2409412&amp;amp;item_id=&#039; + $id + &#039;&amp;amp;format=json&amp;amp;callback=?&#039;, function(data){
counter = counter + data.response.count;
$(&#039;.voices-&#039;+$id).html(counter);
});
/* twitter */
$.getJSON(&#039;http://urls.api.twitter.com/1/urls/count.json?url=&#039; + $url + &#039;&amp;amp;callback=?&#039;, function(data2) {
counter = counter + data2.count;
$(&#039;.voices-&#039;+$id).html(counter);
});<br />};
Не забывайте подключить функции активации кнопок социальных сетей:
<!-- G+ -->
<script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
<!-- FB -->
<script type="text/javascript" src="http://userapi.com/js/api/openapi.js?34"></script>
<!-- VK -->
<script type="text/javascript">
VK.init({apiId: идентификатор сайта, onlyWidgets: true});
</script>