7.2 KiB
Отзывы
Модуль reviews хранит отзывы отдельно от комментариев и простых голосов. У
отзыва есть оценка от 1 до 5, заголовок, текст, достоинства, недостатки, признак
подтверждённой покупки и ответ компании. Для работы требуется модуль
Взаимодействия.
Вставка отзывов
Для текущего документа:
[mod_reviews]
Для конкретного объекта:
[mod_reviews:document:123]
[mod_reviews:poll:8]
[mod_reviews:gallery:4]
Формат: [mod_reviews:ТИП:КЛЮЧ]. Товары, новости и статьи являются документами,
поэтому для них используется тип document и ID документа. Тип должен быть
разрешён настройкой Где доступны отзывы. Параметр страницы называется
reviews_page.
Поведение
На вкладке Настройки можно:
- разрешить или запретить отзывы гостей;
- потребовать email гостя;
- полностью скрыть форму, оставив опубликованные отзывы;
- включить заголовок, достоинства и недостатки;
- показывать отметку подтверждённой покупки;
- отправлять на модерацию все отзывы, только отзывы гостей или публиковать сразу;
- задать число отзывов на странице, длину текста и лимит отправок в час;
- выбрать допустимые типы объектов;
- изменить шаблоны виджета, одного отзыва и формы.
Непроверенные отзывы находятся на вкладке Отзывы. Модератор может опубликовать или отклонить запись, добавить ответ компании и вручную поставить отметку подтверждённой покупки. Email автора в публичный шаблон не передаётся.
Шаблон виджета
| Тег | Значение |
|---|---|
[tag:count] |
Количество опубликованных отзывов объекта. |
[tag:average] |
Средняя оценка с одним знаком после запятой. |
[tag:items] |
Готовый список отзывов или сообщение о пустом списке. |
[tag:pagination] |
Ссылки на страницы отзывов. |
[tag:notice] |
Сообщение о закрытой форме или необходимости войти. |
[tag:form] |
Готовая форма либо пустая строка. |
Шаблон отзыва
| Тег | Значение |
|---|---|
[tag:id] |
ID отзыва. |
[tag:author] |
Экранированное имя автора. |
[tag:rating] |
Оценка числом от 1 до 5. |
[tag:stars] |
Пять заполненных и пустых символов-звёзд. |
[tag:verified] |
Плашка подтверждённой покупки либо пустая строка. |
[tag:verified_value] |
Признак подтверждённой покупки: 1 или 0. |
[tag:title] |
Заголовок в готовом h3 либо пустая строка. |
[tag:title_text] |
Экранированный заголовок без HTML-обёртки. |
[tag:body] |
Экранированный текст с переносами строк. |
[tag:pros] |
Готовый блок достоинств либо пустая строка. |
[tag:pros_text] |
Экранированный текст достоинств без обёртки. |
[tag:cons] |
Готовый блок недостатков либо пустая строка. |
[tag:cons_text] |
Экранированный текст недостатков без обёртки. |
[tag:reply] |
Ответ компании либо пустая строка. |
[tag:reply_text] |
Экранированный текст ответа без внешней обёртки. |
[tag:date] |
Дата в формате дд.мм.ГГГГ. |
[tag:datetime] |
ISO-дата для атрибута datetime. |
Шаблон формы
| Тег | Значение |
|---|---|
[tag:csrf] |
Скрытое поле CSRF. |
[tag:guest_fields] |
Имя и email для неавторизованного посетителя. |
[tag:title_field] |
Поле заголовка, если оно включено. |
[tag:pros_cons_fields] |
Поля достоинств и недостатков, если они включены. |
[tag:protection] |
Поля активного профиля антиспама reviews. |
[tag:min_length] |
Минимальная длина текста. |
[tag:max_length] |
Максимальная длина текста. |
Для штатной отправки форма должна содержать data-review-form, поле
rating, textarea[name=body], кнопку type=submit и элемент
data-review-status. Внешний контейнер с адресом API, CSRF и публичные assets
модуль добавляет автоматически.
Публичный API
GET /api/v1/reviews/document/123?page=1
POST /api/v1/reviews/document/123
GET возвращает опубликованные отзывы, пагинацию и агрегат рейтинга. POST
принимает rating, body, необязательные title, pros, cons, а для гостя
name и email. CSRF передаётся полем _csrf или заголовком
X-CSRF-Token. Ответ сообщает статус published или pending.
Средняя оценка и количество хранятся в отдельной агрегатной таблице и не пересчитываются при каждом показе карточки.
Хуки
| Хук | Контекст |
|---|---|
reviews.creating |
Массив allowed, status, rating, title, body, pros, cons, target_type, target_key; можно отклонить или скорректировать запись. |
reviews.created |
Полная сохранённая запись отзыва. |
reviews.rendering |
Массив target_type, target_key, data, settings, html; позволяет заменить итоговый HTML. |
Шаблоны не выполняют PHP. Для проектной логики используйте хуки, а для оформления — классы в шаблонах и CSS темы сайта.