2.7 KiB
Рейтинги
Модуль ratings выводит шкалу оценок для документов и других объектов. Голоса
хранит обязательный модуль Взаимодействия.
Вставка виджета
Для текущего документа:
[mod_rating]
Для явно указанного объекта:
[mod_rating:document:145]
[mod_rating:article:news-2026-07]
Формат: [mod_rating:ТИП:КЛЮЧ]. Тип должен присутствовать в настройке
Типы объектов. Для обычных документов используется document, ключом
служит ID. Без явных аргументов ID берётся из контекста текущего документа.
Теги шаблона
| Тег | Значение |
|---|---|
[tag:label] |
Настраиваемое название рейтинга. |
[tag:average] |
Средняя оценка с одним знаком после точки. |
[tag:count] |
Число пользователей, поставивших оценку. |
[tag:scale] |
Максимум шкалы, от 2 до 10. |
[tag:own] |
Оценка текущего посетителя или пустая строка. |
[tag:buttons] |
Готовые доступные кнопки шкалы с ARIA-атрибутами. |
Внешний контейнер, endpoint, CSRF и служебное сообщение добавляет renderer.
Не удаляйте [tag:buttons], если виджет должен принимать оценки.
API и поведение
Виджет отправляет оценку в общий endpoint:
POST /api/v1/interactions/document/145/rating
Полезная нагрузка: operation=set, action=rating, value=1..scale. Повторная
оценка того же actor обновляет старое значение, а не создаёт второй голос.
Гостевые оценки включаются отдельно. Rate limit задаёт число изменений в минуту. Если тип объекта не разрешён, renderer не должен использоваться для него, а API отклонит запись правилами канала.
Фильтр ratings.rendering получает target_type, target_key, average,
count, own, scale и готовый html. Обработчик может вернуть изменённый
HTML, не вмешиваясь в подсчёт.