goodStar

Компонент звездного рейтинга
Автор дополнения
Михаил Электриков
Пакетов
11
Закачек
990
Обычно отвечает в течение суток
Автор дополнения
Пакетов
11
Закачек
990
Обычно отвечает в течение суток
Версия 1.0.10-pl
Дата выпуска 25.07.2021
Загрузки 237
Просмотры 8 511
Формула подсчета рейтинга:

Рейтинг = Нижняя граница доверительного интервала Вильсона (Wilson) для параметра Бернулли

Более подробно про расчет тут.

В комплекте 9 тем
  1. bars-1to10
  2. bars-square
  3. bars-pill
  4. bars-reversed
  5. bars-horizontal
  6. fontawesome-stars
  7. css-stars
  8. bootstrap-stars
  9. fontawesome-stars-o







Настройки:
goodstar_theme // тема звездочек
goodstar_selector // класс обертки select

Для показа рейтинга достаточно вызвать сниппет:
[[goodStar?]]

c параметрами:

&thread=`` //id ресурса
&tpl=`` //чанк. Можно указывать через @FILE при установленном pdoTools
&group=`` //группа

Стандартный чанк имеет вид:
<select class="example" data-thread="[[+id]]" data-current-rating="[[+current_rating]]" data-group="[[+group]]" data-readonly="[[+readonly]]">
    <option value=""></option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
</select>

<span>Количество голосов: [[+count_voite]]</span>

Теперь можно выбирать, какой вывод рейтинга показывать:

&conclusion=`` // Принимает параметры wilson,average,user

  • wilson — параметр по умолчанию. Выводит рейтинг по формуле как раньше
  • average — параметр выводит среднюю оценку (сумма голосов / кол-во голосов)
  • user — параметр выводит голос, который поставил пользователь

&readonly=``

Данный параметр принимает значение 1 или 0. Разрешает голосовать или нет пользователю. Удобно на пример, запрет голосования в каталоге, но разрешать в карточке товара.

&onlyAuth=``

Параметр принимает значение 1 (только авторизованные) или 0 (могут все). Разрешает голосовать только авторизованным пользователям.

Добавлено событие OnGoodStarVoice, которое принимает массив:
array(
            'thread' => '', // id ресурса
            'vote' => '', // голос
            'user' => '' // id юзера, если авторизован
)

Обновил чанк. Теперь выводит отдельно голос пользователя в плейсхолдер [[+user_rating]].

«Накрутка рейтинга»:

Копируем код и выполняем его в приложении Console или в сниппете:

<?php

$vote = 2; // Голос от 1 до 5
$count = 1; // Сколько голосов отдавать для каждого ресурса

$goodStar = $modx->getService('goodStar', 'goodStar', $modx->getOption('goodstar_core_path' ,'', MODX_CORE_PATH . 'components/goodstar/') . 'model/', array());
if (!$goodStar) {
    return 'Could not load goodStar class!';
}

// Теперь выберем ресурсы которые нам нужны

$resources = $modx->getIterator('modResource');

foreach($resources as $resource){
    
    //Создаем входные параметры
    $data = array(
        'thread' => $resource->get('id'),
        'vote' => $vote
        );
        
        for($i = 1; $i <= $count; $i++){
            $goodStar->saveVoice($data, true); // Второй параметр запускает создание голоса без участия пользователя. генерирует как анонимов
        }
}

echo 'Done';

1.0.10-pl

  • Поправил вызов ajax
  • Добавил селектор в js

1.0.9-pl

  • Добавил поддержку pdooTools и вывод чанка через @FILE

1.0.8-pl

  • Добавил возможность передачи юзера при сохранении голоса. Дает возможность накрутить голоса через скрипт

1.0.7-pl

  • Поправил формат числа, что бы всегда был с точкой

1.0.6-pl

  • Теперь в событии OnGiidStarVoice можно менять входные данные

1.0.6-pl

  • Добавлена микроразметка для вывода в поисковики

1.0.5-pl

  • Исправил ошибку с выводом дробного числа
  • Добавил вывод только для авторизованных
  • Добавил событие OnGoodStarVoice

1.0.4-pl

  • Исправил ошибку с записью числа с плавающей запятой

1.0.3-pl

  • Добавил параметр conclusion. Теперь можно выбирать вывод звезд
  • Параметр readonly. Можно отключать голосование

1.0.2-pl

  • Поправил баг с сохранением Вильсона

1.0.0-pl

  • Добавлены темы для оформления

Последние обсуждения в сообществе MODX.pro