
Интеграция с Tickets
Статус: на MODX 3 не проверено. Актуальный Tickets под Revolution 3 пока недоступен, runtime-проверку отложили до совместимого релиза.
API компонента generic: любой объект с class_key + object_id. Для комментариев ожидается class_key = TicketComment (или FQCN пакета, когда он появится) и object = ID комментария. Примеры ниже — целевая схема подключения.
Блок реакций под комментарием
<div class="comment-body">[[+text]]</div>
[[!Reactions?
&class=`TicketComment`
&object=`[[+id]]`
&set=`updown`
]]{'!Reactions' | snippet : [
'class' => 'TicketComment',
'object' => $comment.id,
'set' => 'updown',
]}Счётчик лайков
[[!ReactionsCount?
&class=`TicketComment`
&object=`[[+id]]`
&format=`👍 {LIKES}`
]]{'!ReactionsCount' | snippet : [
'class' => 'TicketComment',
'object' => $comment.id,
'format' => '👍 {LIKES}',
]}Реакции на сам тикет (ресурс)
Tickets хранит тикеты как ресурсы MODX. Для реакций на страницу тикета:
[[!Reactions? &set=`github`]]{'!Reactions' | snippet : [
'class' => 'modResource',
'object' => $_modx->resource.id,
'set' => 'github',
]}Топ комментариев
[[!TopLiked?
&class=`TicketComment`
&period=`week`
&limit=`5`
&tpl=`tpl.top.comment`
]]{'!TopLiked' | snippet : [
'class' => 'TicketComment',
'period' => 'week',
'limit' => 5,
'tpl' => 'tpl.top.comment',
]}По рейтингу:
[[!TopRated?
&class=`TicketComment`
&period=`month`
&limit=`10`
]]{'!TopRated' | snippet : [
'class' => 'TicketComment',
'period' => 'month',
'limit' => 10,
]}Чанк для топа комментариев
tpl.top.comment (MODX-плейсхолдеры):
<li class="top-comment" data-idx="[[+idx]]">
<span class="top-comment__likes">[[+likes]] 👍</span>
<span class="top-comment__rating">рейтинг: [[+rating]]</span>
<span class="top-comment__id">#[[+object_id]]</span>
</li>Fenom-эквивалент (@INLINE / файл):
<li class="top-comment" data-idx="{$idx}">
<span class="top-comment__likes">{$likes} 👍</span>
<span class="top-comment__rating">рейтинг: {$rating}</span>
<span class="top-comment__id">#{$object_id}</span>
</li>Для ссылки на комментарий получите объект TicketComment по object_id в отдельном сниппете или через pdoTools.
AJAX и контекст
Комментарии Tickets обычно рендерятся в контексте web. JS-виджет передаёт context из data-атрибута. Если комментарии в другом контексте, укажите context явно.
[[!Reactions?
&class=`TicketComment`
&object=`[[+id]]`
&set=`updown`
&context=`web`
]]{'!Reactions' | snippet : [
'class' => 'TicketComment',
'object' => $comment.id,
'set' => 'updown',
'context' => 'web',
]}Модерация
Заблокируйте IP или пользователя через CLI:
php core/components/reactions/cli.php ban add --ip=203.0.113.10 --reason=spam --days=7
php core/components/reactions/cli.php ban add --user=42 --reason=abuse