Бесплатно
Загрузите дополнение из админки вашего сайта.
Как загрузить?
Как загрузить?
Внимание, этот компонент требует версию PHP
5.4
или выше!
Если ваш сайт использует PHP ниже требуемого, установка этого
дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже
2.3
!
Пакет довольно прост и одновременно функционален. Выполняет систему рейтинга для любого объекта, по-умолчанию, для ресурсов. Чем-то напоминает систему лайков на YouTube, в частности, в пакете реализован оптимистичный интерфейс.
Также, особенностью компонента является правильный подсчет рейтинга на основе вычисления нижней границы доверительного интервала Вильсона для параметра Бернулли. По-простому: эта формула не даст встать новым записям с 1 лайком и 0 дизлайками выше более старых записей с сильным рейтингом.
mode — режим работы сниппета: db или local. В режиме local сниппет обходится без запроса к базе для того, чтобы узнать кол-во лайков/дизлайков и рейтинг, вместо этого вам необходимо передать эти цифры в сниппет в качестве параметров. По-умолчанию, db.
guest — разрешить гостям голосовать. По-умолчанию, Да.
parent — ID объекта. По-умолчанию, ID текущего ресурса.
class — класс объекта. По-умолчанию, modResource.
list — название списка (дополнительный параметр группировки). По-умолчанию, default.
Вывод рейтинга для текущего тикета без возможности голосовать гостям:
Вывод рейтинга для текущего ресурса в режиме local:
class — класс объекта,
list — название списка,
likes — кол-во лайков,
dislikes — кол-во дизлайков,
rating — текущий рейтинг, уже пересчитанный.
Код плагина:
Также, особенностью компонента является правильный подсчет рейтинга на основе вычисления нижней границы доверительного интервала Вильсона для параметра Бернулли. По-простому: эта формула не даст встать новым записям с 1 лайком и 0 дизлайками выше более старых записей с сильным рейтингом.
Список преимуществ:
- Оптимистичный интерфейс,
- Наиболее правильная формула вычисления рейтинга,
- Работа с любыми объектами (modResource, modUser, кастомные объекты),
- Голосование гостями,
- Анимированное изменения полосы/числа рейтинга,
- Событие плагина — xLikeOnVote.
Сниппет xLike
Выводит систему рейтинга на месте вызова.Параметры
tpl — чанк шаблона вывода. По-умолчанию, tpl.xLike.mode — режим работы сниппета: db или local. В режиме local сниппет обходится без запроса к базе для того, чтобы узнать кол-во лайков/дизлайков и рейтинг, вместо этого вам необходимо передать эти цифры в сниппет в качестве параметров. По-умолчанию, db.
guest — разрешить гостям голосовать. По-умолчанию, Да.
parent — ID объекта. По-умолчанию, ID текущего ресурса.
class — класс объекта. По-умолчанию, modResource.
list — название списка (дополнительный параметр группировки). По-умолчанию, default.
Примеры
Вывод рейтинга для текущего ресурса с возможностью голосовать гостям:{'!xLike' | snippet}
Вывод рейтинга для текущего тикета без возможности голосовать гостям:
{'!xLike' | snippet : [
'guest' => false,
'class' => 'Ticket',
]}
Вывод рейтинга для текущего ресурса в режиме local:
{'!xLike' | snippet : [
'mode' => 'local',
'likes' => $_modx->resource['likes'],
'dislikes' => $_modx->resource['dislikes'],
'rating' => $_modx->resource['rating'],
]}
Подразумевается, что в ТВ полях likes, dislikes, rating хранится соответствующая информация.Событие xLikeOnVote
Данное событие срабатывает после голосования пользователем и всех проверок.Параметры плагина
parent — ID объекта, к которому привязан рейтинг,class — класс объекта,
list — название списка,
likes — кол-во лайков,
dislikes — кол-во дизлайков,
rating — текущий рейтинг, уже пересчитанный.
Практическое применение
Задача: при голосовании в рейтинге (с параметрами сниппета class=modResource, list=default), записывать текущий рейтинг в ТВ поле rating.Код плагина:
switch ($modx->event->name) {
case "xLikeOnVote":
if ($class == 'modResource' && $list == 'default') {
if ($resource = $modx->getObject($class, array('id' => $parent))) {
$resource->setTVValue('rating', $rating);
$resource->save();
}
}
break;
}
Таким образом, мы сможем сортировать ресурсы (или любые другие объекты) по правильно подсчитанному рейтингу. 1.1.2-beta (13.01.2021)
- Добавлена поддержка IPv6
1.1.1-beta (13.01.2021)
- Исправлена проблема с проверкой уникальности записи в процессоре
xlVoteCreateProcessor
1.1.0-beta (13.01.2021)
- Добавлена работа при отключённых сессиях для анонимов
- Добавлен класс
xlCrypter
- Добавлены закриптованные параметры в чанк
tpl.xLike
- Добавлено обязательное включение параметра
ip
в сниппетеxLike
, если отключены сессии для анонимов - Добавлена работа с закриптованной строкой параметров сниппета в
action.php
1.0.5-beta (15.09.2019)
- Добавлено событие плагина xLikeOnCanVote
1.0.4-beta (06.03.2019)
- Поправлена инициализация фронт-энд скриптов
- Поправлен тег подключения JS кода
1.0.3-beta (30.07.2018)
- Добавлен параметр &ip в сниппет, позволяющий отключить проверку по IP
1.0.2-beta (08.08.2017)
- Добавлена жесткая связь modResource и modUser с объектом голоса xlVote, что позволяет при удалении ресурса или юзера, удалять связанные с ним объекты голосов
1.0.1-beta (17.07.2017)
- Добавлен режим вызова сниппета (db, local)
1.0.0-beta (16.07.2017)
- Start
Последние обсуждения в сообществе MODX.pro