
Reactions
Универсальная система реакций для MODX 3 — лайки, наборы в стиле GitHub, топы и trending на любом объекте


Текстовые счётчики без кнопок — для карточек, списков, мета-строк.
| Параметр | По умолчанию | Описание |
|---|---|---|
class | modResource | Класс объекта (class_key в API) |
object | ID текущего ресурса | ID объекта |
context | ключ текущего контекста | Контекст MODX |
format | {TOTAL} | Строка с плейсхолдерами |
type | (пусто) | Узкий фильтр по имени типа (like, love…) |
toPlaceholder | (пусто) | Имя плейсхолдера вместо прямого вывода |
| Плейсхолдер | Описание |
|---|---|
{TOTAL} | Сумма всех реакций |
{LIKES} | Сумма like + up |
{DISLIKES} | Сумма dislike + down |
{RATING} | LIKES − DISLIKES |
{PCT_UP} | Доля лайков от общего, 0–100 |
{PCT_DOWN} | Доля дизлайков от общего, 0–100 |
{like}, {love}, {funny}… | Счётчик типа. Нет данных → 0, не сырой {love} |
{TOTAL} [[!ReactionsCount]]{'!ReactionsCount' | snippet : [
'class' => 'modResource',
'object' => $_modx->resource.id,
]}Пример вывода: 15.
[[!ReactionsCount?
&format=`Всего {TOTAL}: 👍 {LIKES} / 👎 {DISLIKES}`
]]{'!ReactionsCount' | snippet : [
'format' => 'Всего {TOTAL}: 👍 {LIKES} / 👎 {DISLIKES}',
]}[[!ReactionsCount?
&format=`Рейтинг {RATING} · ↑{PCT_UP}% · ↓{PCT_DOWN}%`
]]{'!ReactionsCount' | snippet : [
'format' => 'Рейтинг {RATING} · ↑{PCT_UP}% · ↓{PCT_DOWN}%',
]}&type= [[!ReactionsCount?
&type=`like`
&format=`Лайков: {like}`
]]{'!ReactionsCount' | snippet : [
'type' => 'like',
'format' => 'Лайков: {like}',
]}format Имена без отдельного &type=:
[[!ReactionsCount?
&format=`❤️ {love} · 🔥 {fire} · ⭐ {star} · 🚀 {rocket}`
]]{'!ReactionsCount' | snippet : [
'format' => '❤️ {love} · 🔥 {fire} · ⭐ {star} · 🚀 {rocket}',
]}Нулевые и отсутствующие типы печатаются как 0.
[[!ReactionsCount? &format=`{LIKES}`]]{'!ReactionsCount' | snippet : ['format' => '{LIKES}']}[[!ReactionsCount?
&class=`msProduct`
&object=`[[*id]]`
&format=`Товар: 👍 {LIKES} · всего {TOTAL}`
]]{'!ReactionsCount' | snippet : [
'class' => 'msProduct',
'object' => $product.id,
'format' => 'Товар: 👍 {LIKES} · всего {TOTAL}',
]}[[!ReactionsCount?
&object=`[[+id]]`
&format=`Всего {TOTAL}: 👍 {LIKES} / 👎 {DISLIKES}`
&toPlaceholder=`rx.count`
]]
[[+rx.count]]{'!ReactionsCount' | snippet : [
'object' => $id,
'format' => 'Всего {TOTAL}: 👍 {LIKES} / 👎 {DISLIKES}',
'toPlaceholder' => 'rx.count',
]}
{$_modx->getPlaceholder('rx.count')}На MODX 3 не проверено. Вызов:
[[!ReactionsCount?
&class=`TicketComment`
&object=`[[+id]]`
&format=`{LIKES}`
]]{'!ReactionsCount' | snippet : [
'class' => 'TicketComment',
'object' => $comment.id,
'format' => '{LIKES}',
]}