Как бы не рулили социальные кнопки, моя статистика показывает, что лучшим способом узнать что думают посетители о статье по прежнему являются старые добрые кнопки "за" и "против".
Чтобы проголосовать, посетителю не требуется ровно никаких дополнительных действий - ни думать что написать в комментарии, ни решать достойна ли статья появления в ленте его уютной соцсети. И займёт голосование ровно полсекунды времени. И еще одно преимущество перед социальщиной - возможность проголосовать против. Из отрицательной статистики тоже можно сделать множество полезных выводов.
Чтобы оценки давали больше посетителей, я предлагаю показывать большие интуитивно понятные :) кнопки, которые легко сразу заметить. (не то что маленькие плюсики как например на d3 или Хабре).
Во-общем это работает. По указанным кнопкам по прежнему на этом блоге нажимают чаще чем по кнопкам соцсетей.
Я уже выкладывал кнопки для голосования в качестве плагина для Wordpress Но оно было сделано на основе другого плагина Vote It Up, который делал бешеное количество обращений к базе (что тормозило]), да от самого Wordpress я недавно отказался. По этому представляю новое, универсальное и быстрое решение для любого сайта
Главная цель нового решения - сделать все максимально просто, а так же минимизировать обращения к базе данных.
Например, не будет обращений к базе при каждой загрузке страницы, поскольку результат показывается только после нажатия кнопки.
На каждый новый голос будет только два обращения к базе, после чего результат будет храниться у пользователя cookies (плюс еще два обращения для обновления результата, если пользователь нажмет на кнопку повторно)
Для защиты от накруток - валидация происходит на стороне базы. Id поста, IP пользователя, и действие - это уникальный (primary) ключ, то есть такую комбинацию можно записать только один раз.
Требования
- Данные храняться в базе MySql. Для работы с ними есть скрипт на PHP (мне очень стыдно за php, но в там где у меня этот скрипт крутиться ничего другого нет).
- Требуется JQuery и JQuery.cookie. Необходимые библиотеки можно подгурузить с Яндекса :)
Установка
Смотрите пример на Github или
- Выполните в базе комманду:
CREATE TABLE `actions` ( `target` int(10) unsigned not null, `actor` int(10) unsigned not null, `action` varchar(10) not null, `amount` smallint(3) default '0', `comment` varchar(30), `action_date` timestamp not null default CURRENT_TIMESTAMP, PRIMARY KEY (`target`,`actor`,`action`), KEY `target` (`target`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
- Введите в скрипт plusminus.php параметры вашей базы
($host, $user, $pass, $database)
и загрузите его на хостинг. - В файле voting.js укажите url (
var url
) файла plusminus.php - На места где вы хотите видеть кнопки вставьте следующий код:
<div class="vote" vote_id=" < id_поста> "> <div class="vote_bg"> <span class="vote_up"></span> <span class="vote_down"></span> </div> <div class="vote_result"></div> </div>
- В любом месте страницы вызовите voting.js:
<script type="text/javascript" src="voting.js"></script>
Использование
- Если вызывать
plusminus.php?stats
с параметром stats он вернёт список самых популярных постов в формате json{id_поста:количество_глосов}
. - Если вызывать
plusminus.php?pulse
с параметром pulse будут показаны 10 последних голосов. <--* Как сгенерировать вижет лучщих постов для blogofile смотрите 1 2--> - Плюс с этим скриптом вам предоставляется универсальная функция:
vote( < id_объекта >, < оценка >, < действие > );
- где:
< id_объекта >
положительный integer< оценка >
может 1, -1, или 0. за против, или обновить соответственно.< действие >
строка
- C помощью которой можно считать что угодно. Например я прикрутил ее к социальным кнопкам от Яндекса, что-бы каждое упонинание в соцсети, считалось за положительный голос:
<script type="text/javascript"> $.getScript("http://yandex.st/share/share.js", function(data, textStatus, jqxhr) { $(".yashare-auto-init").click(function() { var url = $(this).attr('data-yashareLink'); var post_id = url.substring(url.lastIndexOf('/') + 1); vote(post_id,1,"social"); }); }); </script>