Как сделать рейтинг материалов +/- (плюс/минус) JavaScript

Рейтинг +/- (плюс/минус) для материалов юкоз, оценка материала плюс или минус скрипт для ucoz

Как сделать рейтинг материалов +/- (плюс/минус)

» » Сообщение:

Как сделать рейтинг материалов +/- (плюс/минус)
Как сделать рейтинг материалов +/- (плюс/минус)

1. Заливаем на хост прикрепленный файл. Подключаем его в код страницы.
2. В шаблон вида материалов нужного модуля вставляем

Код: Выделить всё Развернуть
<?if($RATE_FORM$)?><a href="#" onclick="rateForm(-1,$ID$);return false">-</a><?endif?>
<b title="Голосов: $RATED$" id="rate_$ID$" class="<?if(($RATING$*$RATED$-2*$RATED$)=0)?>nullRate<?else?><?if(($RATING$*$RATED$-2*$RATED$)<0)?>negativeRate<?else?>positiveRate<?endif?>  <?endif?>"><script type="text/javascript">document.write(Math.round(<?($RATING$*$RATED$)?>)-<?2*$RATED$?>)</script></b>
<?if($RATE_FORM$)?><a href="#" onclick="rateForm(1,$ID$);return false">+</a><?endif?>

Где в участке rateForm(mark, id, module, events);return false

  • mark - Оценка (±1)
  • id - ID оцениваемого материала
  • module - название модуля (forum, blog, load, ...). Определяется автоматически, если не указано.
  • events - объект обработчиков событий. Имеет 3 свойства:
    • before - действие до отправки запроса. Принимает аргументом jQuery-объект, указывающий на #rate_$ID$.
    • after-success - действие после успешной оценки. Принимает аргументами jQuery-объект, указывающий на #rate_$ID$ и новую оценку.
    • after-error - действие после отправки запроса с ошибкой. Принимает аргументом код, возвращаемый сервером в первом теге cmd.

3. В CSS прописываем 3 класса:

  • positiveRate - оформление положительного рейтинга.
  • negativeRate - оформление отрицательного рейтинга.
  • nullRate - оформление нулевого рейтинга.
Вложения
Зарегистрируйтесь, чтобы скачать вложения.
скрипт, юкоз, материалов, рейтинг

Re: Как сделать рейтинг материалов +/- (плюс/минус)

papajustify » » Сообщение:

Реализовал на сайте эту штуку, очень круто, спасибо.
Единственное - у меня не пропадает форма для выставления оценки, но мне оно и надо, иначе дизайн не айс.

Но столкнулся с проблемой - некорректно работает сортировка материалов по рейтингу. Система явно что-то "ищет", только вот как, остается загадкой.

Посмотреть можно например тут

Код: Выделить всё Развернуть
http://onlyminecraft.ru/load/mody_dlja_minecraft/1

А при сортировке по убыванию первым идет материал с рейтингом 6.
То же самое при возрастании, на последних местах далеко не самые рейтинговые материалы.

Можно ли как-нибудь решить эту проблему и при этом оставить форму для оценки?
Заранее благодарен.


Re: Как сделать рейтинг материалов +/- (плюс/минус)

Admin » » Сообщение:

papajustify,
Вы забываете самое главное:
Цифра выводится по формуле:

Код: Выделить всё Развернуть
(<?($RATING$*$RATED$)?>)-<?2*$RATED$?>

- которая вычисляет среднее значение.

Код: Выделить всё Развернуть
http://onlyminecraft.ru/load/mody_dlja_minecraft/modloader_modloader_1_7_2/1-1-0-4

“рейтинг вообще 63”
128.7-66 - смотри исходник
..несложные вычисления и получаем 3.87 - оригинальный рейтинг

Код: Выделить всё Развернуть
http://onlyminecraft.ru/load/mody_dlja_minecraft/balkon_39_s_weapon_mod_1_5/1-1-0-12

рейтинг 6
(10)-4
оригинальный рейтинг 5


Re: Как сделать рейтинг материалов +/- (плюс/минус)

papajustify » » Сообщение:

Ясно, спасибо! Посмотрел исходники, действительно, расчеты верны.
Проверил на новых материалах, плюс добавляет 3 рейтинга, минус - 1. Осталось только вручную отредактировать старые материалы с большим количеством проголосовавших, чтобы выглядело нормально, но это уже ерунда.
Гранд мерси.


Re: Как сделать рейтинг материалов +/- (плюс/минус)

PuerMAN » » Сообщение:

Классный скрипт, я немного его переделал, как на форуме поддержки ucoz:

Код: Выделить всё Развернуть
Рейтинг: <b title="Голосов: $RATED$" id="rate_$ID$" class="<?if(($RATING$*$RATED$-2*$RATED$)=0)?>nullRate<?else?><?if(($RATING$*$RATED$-2*$RATED$)<0)?>negativeRate<?else?>positiveRate<?endif?>  <?endif?>"><script type="text/javascript">document.write(Math.round(<?($RATING$*$RATED$)?>)-<?2*$RATED$?>)</script></b>

<b><?if($RATE_FORM$)?>( Помогла ли Вам эта статья: <a href="#" onclick="rateForm(-1,$ID$);return false">Нет</a>/<?endif?>

<?if($RATE_FORM$)?><a href="#" onclick="rateForm(1,$ID$);return false">Да</a>)<?endif?></b>

В CSS так сделал, чтоб еще и плюсик менял цвет:

Код: Выделить всё Развернуть
.nullRate {
color:gray
}

.negativeRate {
color:red
}

.positiveRate {
color:green
}

.positiveRate:before {
content:'+'
}


Re: Как сделать рейтинг материалов +/- (плюс/минус)

Admin » » Сообщение:

Muxteb,

Muxteb писал(а):C наступающим вас =) А можно сделать так, чтобы предел рейтинга был 10? то есть так: 10 / 10.

Да, спасибо и вас с наступающим )
Теоретически, можно, например умножая на два..)

Код: Выделить всё Развернуть
$RATED$*2

Но практически, рейтинг всегда будет от нуля до пяти - системные установки..



Re: Как сделать рейтинг материалов +/- (плюс/минус)

Admin » » Сообщение:

Muxteb,

Насколько я понял, скрипт вычисляется по формуле: рейтинг разделить на 4?

Не совсем, он вычисляет как бы среднее значение:

Код: Выделить всё Развернуть
(<?($RATING$*$RATED$)?>)-<?2*$RATED$?>
рейтинг 6
(10)-4
оригинальный рейтинг 5

- из кол-ва проголосовавших и общего рейтинга по формуле: r = y*x-2x;
--

То есть, чтобы рейтинг в любом случае не поднимался больше 5 или 10?

В таком случае, возникает вопрос: зачем вам этот скрипт?
Так как того, что вы хотите можно добиться просто умножив системный рейтинг, который в принципе не поднимается больше 5, на 2 ?

Код: Выделить всё Развернуть
<?($RATING$*2)?>

О чем и было подсказано вам выше.

Если же нужно не более пяти, то:

Код: Выделить всё Развернуть
<?($RATING$)?>

То бишь, красное меняем на нужное:

plain Код: Выделить всё Развернуть
<?if($RATE_FORM$)?><a href="#" onclick="rateForm(-1,$ID$);return false">-</a><?endif?>
<b title="Голосов: $RATED$" id="rate_$ID$" class="<?if(($RATING$*$RATED$-2*$RATED$)=0)?>nullRate<?else?><?if(($RATING$*$RATED$-2*$RATED$)<0)?>negativeRate<?else?>positiveRate<?endif?><?endif?>">
<?($RATING$*2)?></b>
<?if($RATE_FORM$)?><a href="#" onclick="rateForm(1,$ID$);return false">+</a><?endif?>
А можно сделать так, чтобы предел рейтинга был 10? то есть так: 10 / 10.
Код: Выделить всё Развернуть
<?($RATING$*2)?> / 10

ps
Весь смысл этого скрипта, в отличие от системного, в том, что рейтинг может быть как положительным, так и отрицательным.






Re: Как сделать рейтинг материалов +/- (плюс/минус)

Герук Юра » » Сообщение:

Admin Привет! Понравился данный скрипт, спасибо за то, что сохранили этот раритет с хелпера который уже заблокирован.

Переделывал данный скрипт, сделал в виде кнопок - "Да" и "Нет" как бы после материала вопрос, понравился ли пост, очень повысил кликабельность со стороны юзеров.

Изображение

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


Re: Как сделать рейтинг материалов +/- (плюс/минус)

Admin » » Сообщение:

Герук Юра писал(а) › 23 авг 2016, 18:55:возможно ли как-то с помощью операторов настроить вычитание и показывать отдельно сколько минусов поставлено

Нет, навскидку.
Но, возможно, тот кто более углубленно изучал математику, найдет формулу вычисления минусов, зная принцип зачисления значений и исходные данные (общ. кол-во голосовавших, общ. рейтинг, «+» == +5, «-» == +1).

То бишь, я не знаю как это сделать, но не исключаю вероятность то, что это возможно.

Герук Юра писал(а) › 23 авг 2016, 18:55:Есть у меня скрипт на PHP, но из-за того, что он на куках, а куки в любой момент могут быть снесены и юзер снова увидит по нолям, системный все же лучше и всегда хранит значение.

php скрипт на куках? .. как интересно..)
Вот при помощи php, можно это сделать, но не на куках, конечно..


След.



Похожие темыКомментарии ПросмотрыПоследнее сообщение
01263Как сделать загрузочную флешку с Wi...
Сообщение от: Admin
0126Как сделать свою шапку для нужных р...
Сообщение от: Admin
2926Re: Дополнительные шрифты к BB-кода...
Сообщение от: SKh
01359Как сделать удобокопируемым текст с...
Сообщение от: Admin
6374Re: Как сделать, что бы данные попа...
Сообщение от: Admin