Голосование на сайтах с помощью социальных сетей
При создании сайта Я люблю ННГУ, одним из требований заказчика было проведение конкурса красоты с голосованием через социальные сети. Под анкетой каждого конкурсанта, были расположены кнопки социальных сетей (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>