Бесплатно
Загрузите дополнение из админки вашего сайта.
Как загрузить?
Как загрузить?
Пакет довольно прост и одновременно функционален. Выполняет систему рейтинга для любого объекта, по-умолчанию, для ресурсов. Чем-то напоминает систему лайков на 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