goodStar

Компонент звездного рейтинга
Автор дополнения
Михаил Электриков
Пакетов
11
Закачек
913
Обычно отвечает в течение суток
Автор дополнения
Пакетов
11
Закачек
913
Обычно отвечает в течение суток
Версия 1.0.10-pl
Дата выпуска 25.07.2021
Загрузки 234
Просмотры 6 761
Внимание, этот компонент требует версию PHP 5.6 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.5 !
Формула подсчета рейтинга:

Рейтинг = Нижняя граница доверительного интервала Вильсона (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