Настройка шаблона формы отзыва
XML-элементы шаблона формы отзыва: что они добавляют в форму виджетов 2.0, как сделать поле обязательным, какие элементы форма не показывает и где хранятся ответы покупателей
Шаблон формы отзыва — XML-документ, который задаёт второй шаг формы отзыва виджетов 2.0 и поле email на первом шаге. Шаблон хранится у категории каталога и редактируется в разделе Админ → Виджеты и формы → Веб-формы. Шаблон редактируют роли Менеджер и Администратор.
Привязка к категориям
Изменения переопределяют настройки шаблона формы по-умолчанию или полученные от родительской категории. Удалить собственный шаблон категории нельзя. Можно только скопировать в неё XML родительского шаблона, но связь с родительским шаблоном при этом не восстановится: см. как вернуть категории шаблон родительской.
| Свойство | Значение |
|---|---|
| Где хранится | У категории каталога. У бренда и отдельного товара своего шаблона нет |
| Какой шаблон получает товар | Шаблон основной категории товара. Если у неё нет своего, то шаблон ближайшей родительской категории, у которой он есть |
| Шаблон по умолчанию | Корневая категория получает шаблон по умолчанию при создании компании, см. шаблон по умолчанию |
| Отметка собственного шаблона | Звёздочка у названия категории с подсказкой «Шаблон переопределён» |
| Проверка при сохранении | Только синтаксис XML. Имена элементов и атрибутов не проверяются |
| Сообщение об ошибке | «Ошибка. Не могу сохранить шаблон. Проверьте синтаксис» |
Форма запрашивает шаблон по ID товара. Шаблон действует только для отзывов о товарах: у отзыва может быть и другой контекст, но для таких отзывов форма шаблон не использует.
Структура документа
Корневой элемент — <survey>. Поля формы описываются внутри <product_review>.
<?xml version="1.0" encoding="UTF-8"?>
<survey>
<product_review>
<!-- элементы формы -->
</product_review>
</survey>
Элементы <header>, <post_message> и <store_review> на уровне <survey> виджеты 2.0 не используют.
Атрибуты skip и required срабатывают только при значении ровно "true". Любое другое значение, в том числе "True" и "1", равносильно отсутствию атрибута.
Элементы второго шага
Второй шаг показывает блоки в таком порядке: детали автора, детали рейтинга, шкалы. Внутри группы блоки идут в порядке элементов в шаблоне. Если в шаблоне нет ни одного элемента <author_detail>, <rating_detail> и <dimension>, форма состоит из одного шага. Число элементов и вариантов ответа не ограничено.
Атрибут name у этих элементов служит ключом ответа в экспорте, импорте и API. При сохранении шаблона наличие name не проверяется.
Из ответов с одинаковым name в отзыве остаётся первый. Поэтому элементы одного вида без name или с повторяющимся name дают в отзыве только один ответ.
author_detail
Вопрос об авторе отзыва, например «Срок использования». С вариантами ответа форма показывает их кнопками с выбором одного варианта. Без вариантов форма показывает текстовое поле. Элементов может быть несколько.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
name | атрибут | да | Ключ вопроса, например time_usage. Шаблон сохраняется и без него, но тогда ответы на разные вопросы не различаются |
<label> | тег | да | Текст вопроса |
<option> | тег, повторяется | нет | Вариант ответа. Покупатель выбирает один |
required | атрибут | нет | "true" делает вопрос обязательным: без ответа форма не отправит отзыв. Без атрибута вопрос можно пропустить |
Ответ сохраняется как строка: текст выбранного варианта или введённый текст.
<author_detail name="time_usage" required="true">
<label>Срок использования</label>
<option>Меньше месяца</option>
<option>Около полугода</option>
<option>Больше года</option>
</author_detail>
rating_detail
Детальная оценка: отдельная оценка товара по критерию, например «Надежность». В форме выводится карточкой с подписью и пятью кнопками с цифрами от 1 до 5. Элементов может быть несколько.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
name | атрибут | да | Ключ критерия, например reliability. Шаблон сохраняется и без него, но тогда ответы на разные критерии не различаются |
<label> | тег | да | Подпись критерия, выводится заголовком карточки |
Форма виджетов 2.0 требует ответ на каждую детальную оценку, с атрибутом required и без него. Ответ сохраняется как число от 1 до 5.
<rating_detail name="reliability">
<label>Надежность</label>
</rating_detail>
dimension
Шкала: оценка между двумя противоположными значениями, например «Размер» от «Маломерит» до «Большемерит». В форме выводится карточкой с тремя кнопками, подписанными label_min, label_half и label_max. Элементов может быть несколько.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
name | атрибут | да | Ключ шкалы, например size. Шаблон сохраняется и без него, но тогда ответы на разные шкалы не различаются |
<label> | тег | да | Название шкалы |
<label_min> | тег | да | Подпись левой кнопки. Ответ -100 |
<label_half> | тег | да | Подпись средней кнопки. Ответ 0 |
<label_max> | тег | да | Подпись правой кнопки. Ответ 100 |
required | атрибут | нет | "true" делает шкалу обязательной: без ответа форма не отправит отзыв. Без атрибута шкалу можно пропустить |
Ответ сохраняется как число: -100, 0 или 100.
<dimension name="size">
<label>Размер</label>
<label_min>Маломерит</label_min>
<label_half>В размер</label_half>
<label_max>Большемерит</label_max>
</dimension>
Поле email
Элемент <author_email> управляет полем email на первом шаге формы, в блоке с данными автора.
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
skip | атрибут | нет | "true" убирает поле email из формы |
required | атрибут | нет | "true" делает поле email обязательным. При skip="true" не действует |
| Шаблон | Поле email в форме |
|---|---|
Элемента <author_email> нет | Показывается, необязательное |
<author_email/> | Показывается, необязательное |
<author_email required="true"/> | Показывается, обязательное |
<author_email skip="true"/> | Не показывается |
Шаблон управляет полем email, только если на сайте не задана стратегия аутентификации. По умолчанию параметр authStrategy пустой, и аутентификации нет. При "otp" поле email показывается и обязательно всегда, при "jwt" блока с данными автора в форме нет. Подробнее — в справочнике настроек виджетов.
Элементы и атрибуты, которые форма виджетов 2.0 не использует
Эти элементы и атрибуты шаблон принимает, но форма виджетов 2.0 их не показывает или берёт их тексты из своего словаря. Тексты первого шага меняются через texts в aplaut.init, см. как изменить тексты и стили виджетов.
| Элемент или атрибут | Что задаёт в шаблоне | Поведение формы виджетов 2.0 |
|---|---|---|
<rating> | Подпись общей оценки | Общая оценка показывается всегда, подпись берётся из текстов виджета |
<pros>, <cons> | Подпись, подсказка, skip, required | Поля достоинств и недостатков показываются всегда и необязательны. skip и required не действуют |
<body> | Подпись, подсказка | Поле текста показывается всегда, подписи берутся из текстов виджета |
<recommended> | Вопрос «Рекомендуете?», skip, required | Вопрос показывается всегда, текст берётся из текстов виджета. skip и required не действуют |
<headline> | Заголовок отзыва | Поля заголовка в форме нет |
<location_name> | Город автора, autofill, required | Поля города в форме нет |
<choice_group> | Группа вариантов с атрибутами multiple, user_options и required | Не показывается |
pattern у <author_detail> | Регулярное выражение для ответа | Ответ не проверяется |
<placeholder> у <author_detail> | Подсказка в текстовом поле | Подсказка берётся из текстов виджета, ключ reviews.form.authorDetail.placeholder |
<header>, <post_message> | Заголовок формы и текст после отправки | Не используются. Действуют только в виджетах 1.0 |
<store_review> | Блок на уровне <survey> рядом с <product_review> | Не используется |
Своя форма на Submissions API получает шаблон в виде JSON-схемы. Признак required="true" попадает в схему у всех элементов из этого раздела, кроме <headline>, — в том числе у тех, которые форма виджетов 2.0 не показывает. Элемент со skip="true" обязательным в схеме не бывает. Общая оценка и текст отзыва в схеме обязательны всегда.
Поля телефона в шаблоне нет. Телефон включают параметры phoneEnabled и phoneRequired в разделе widgetsConfig.review_form, см. справочник настроек виджетов.
Где видны ответы покупателей
Отзыв хранит ответ вместе с name и label на момент отправки. Если изменить подпись в шаблоне, у отправленных раньше отзывов останется прежняя подпись.
| Где | author_detail | rating_detail | dimension |
|---|---|---|---|
| Виджет отзывов, сводка над списком | Не показывается | Средняя оценка по каждому критерию, см. сводку в виджете отзывов | Среднее положение на каждой шкале, см. сводку в виджете отзывов |
| Модерация, карточка отзыва | Показывается, редактируется | Показывается, редактируется | Показывается, редактируется |
| Экспорт отзывов | Колонки author_details, author_details_by_name | Колонки rating_details, rating_details_by_name | Колонки dimensions, dimensions_by_name |
| Импорт отзывов | Колонки author_details.<n>.label и .value | Колонки rating_details.<n>.label и .value | Не импортируются |
| Platform API v4 | Поле author_details | Поле rating_details | Поле dimensions |
| Вебхуки | Поле author_details | Поле rating_details | Не передаются |
Формат колонок импорта — в справочнике форматов файлов импорта.
Сводка в виджете отзывов
Сводка над списком отзывов строится по ответам в опубликованных отзывах, а не по текущему шаблону. Ответы группируются по name.
| Свойство | Значение |
|---|---|
| Какие отзывы учитываются | Опубликованные отзывы на товар и на другие товары его группы |
| Какие критерии и шкалы показываются | Все name, на которые есть ответ хотя бы в одном опубликованном отзыве: и удалённые из шаблона, и пришедшие из шаблона другой категории, через импорт или API |
| Какая подпись показывается | Самая частая среди отзывов с этим name. Это касается и label_min, label_half, label_max у шкал |
| Сколько показывается | До 10 детальных оценок и до 10 шкал, по убыванию числа отзывов с ответом |
| Когда пересчитывается | При загрузке виджета. Фильтры и подгрузка отзывов сводку не меняют |
После переименования подписи в шаблоне сводка показывает новую подпись, только когда отзывов с ней становится больше, чем с прежней. Критерий исчезает из сводки, когда на товар и его группу не остаётся опубликованных отзывов с этим name.
Шаблон по умолчанию
Корневая категория получает этот шаблон при создании компании. Из его элементов форма виджетов 2.0 показывает два вопроса об авторе с вариантами и две детальные оценки. Поле email в форме показывается и необязательно.
<?xml version="1.0" encoding="UTF-8"?>
<survey>
<header>Мой отзыв о товаре</header>
<product_review>
<rating>
<label>Общее впечатление</label>
</rating>
<rating_detail name="reliability">
<label>Надежность</label>
</rating_detail>
<rating_detail name="functionality">
<label>Функциональность</label>
</rating_detail>
<recommended>
<label>Рекомендуете данный товар?</label>
</recommended>
<headline>
<placeholder>Краткое содержание отзыва</placeholder>
<label>Заголовок</label>
</headline>
<body>
<placeholder>Опишите подробнее свои впечатления о товаре. Чем бы Вы хотели поделиться с другими покупателями?</placeholder>
<label>Текст отзыва</label>
</body>
<author_detail name="time_usage">
<label>Срок использования</label>
<option>Меньше месяца</option>
<option>Около полугода</option>
<option>Больше года</option>
</author_detail>
<author_detail name="frequency_usage">
<label>Частота использования</label>
<option>Ежедневно</option>
<option>Несколько раз в неделю</option>
<option>Пару раз в месяц</option>
</author_detail>
<location_name autofill="true"/>
</product_review>
</survey>