Webmaster

Универсальные кнопки для оценки статей на сайте III

   

Как бы не рулили социальные кнопки, моя статистика показывает, что лучшим способом узнать что думают посетители о статье по прежнему являются старые добрые кнопки "за" и "против".

Чтобы проголосовать, посетителю не требуется ровно никаких дополнительных действий - ни думать что написать в комментарии, ни решать достойна ли статья появления в ленте его уютной соцсети. И займёт голосование ровно полсекунды времени. И еще одно преимущество перед социальщиной - возможность проголосовать против. Из отрицательной статистики тоже можно сделать множество полезных выводов.

Чтобы оценки давали больше посетителей, я предлагаю показывать большие интуитивно понятные :) кнопки, которые легко сразу заметить. (не то что маленькие плюсики как например на 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>

Скачать plusminus c Github

Оцените статью
  • cxxcxccxxc

    xxccxcxxccxcxcxcxxccx

  • http://bobss.net

    Подойдёт спасибо