
Квиз
Многошаговый квиз: ответы, контакты, опциональный расчёт цены, письмо на email. Сниппет PageBuilderQuiz из шаблона не вызывайте: его вызывает FetchIt из чанка секции.
Информация
Требуются PageBuilder Pro и FetchIt.
Зачем квиз
- Сбор лида по шагам без отдельного конструктора квизов
- Режим
pricingс живой суммой иprice_deltaу опций - Режим
surveyбез контактного шага по умолчанию
Что нужно заранее
- Transport pagebuilderpro и capability
pro. - Дополнение FetchIt. Без него секция показывает «Форма временно недоступна. Установите FetchIt.»
- Получатель: поле Notify email в секции или системная настройка
emailsender.
Добавить секцию
- Ресурс → вкладка Секции → Добавить секцию.
- В каталоге откройте Quiz (категория conversion).
- Либо вкладка Примеры → пресет Quiz: расчёт кухни (
quiz-kitchen): modepricing, три шага, контакты,quiz_key=kitchen.
После вставки пресета поля можно править. Вкладка Примеры видна при pagebuilder_catalog_examples_enabled.
Типичные страницы
Похожие секции
- Форма обратной связи для одной формы без шагов
- CTA с ссылкой вместо сбора ответов
Параметры блока
| Параметр | Значение |
|---|---|
| key | quiz |
| Слой | Pro |
| Категория | конверсия (conversion) |
| Chunk | pagebuilderpro_quiz |
| Требования | pro, FetchIt |
Поля в редакторе
Mode (mode)
Тип select. lead: шаги и контакт. pricing: то же плюс сумма. survey: шаги, контакт по умолчанию выключен. Неизвестное значение обработчик считает lead.
Cover
| Поле | Тип | Назначение |
|---|---|---|
title, intro | text / textarea | Обложка |
cover_image | image | Опционально |
start_as_panel | yesno | Cover как первая панель wizard с кнопкой Start |
start_label | text | Текст кнопки на cover |
base_price, currency_suffix | number / text | Только при mode = pricing |
Steps (steps)
Тип repeater. Обязательное.
| Поле | Правило |
|---|---|
title | Обязательно |
type | single (radio), multi (checkbox), text, info |
required | Пустой required-шаг блокирует Далее и submit. Для info игнорируется |
options | Для single / multi: label, image, price_delta (в сумму только в pricing) |
POST: answer[stepIndex] или answer[stepIndex][]. В POST уходят индексы опций. В письме подставляются labels.
Contact
| Поле | Правило |
|---|---|
contact_enabled | Если не задано: вкл. для lead/pricing, выкл. для survey |
contact_fields | Как у contact_form: name, label, type, required. Имя поля: [a-z][a-z0-9_]* |
consent_text | Текст 152-ФЗ под полями (абзац, без checkbox) |
success_message, redirect_url | После успеха. Редирект через 800 ms |
quiz_key | Обязателен. POST pb_quiz_key. На странице ключи уникальны |
notify_email | Получатель. Пусто → emailsender |
Ответы посетителя в published_json не пишутся. В JSON секции только схема.
Labels
submit_label, prev_label, next_label, contact_title, total_label перекрывают лексикон pagebuilder:frontend.
Сохранить и проверить
- Сохранить ресурс MODX публикует
published_json. Handler читает published, еслиpublishedRevision > 0, иначе черновик. - В шаблоне уже должен быть
[[!PageBuilder]]. - На фронте: шаги, прогресс, в
pricingживой итог, контакт и Отправить.
Что видит посетитель
Секция pb-quiz с wizard-панелями. AJAX через FetchIt → PageBuilderQuiz.
Письмо
Тема: PageBuilder quiz ({quiz_key}). Тело: ключ, mode, pagetitle, ответы, в pricing строка Estimate, контакты. Сумма: base_price + price_delta выбранных опций.
Fallback
| Состояние | UI |
|---|---|
| FetchIt не установлен | Сообщение о недоступности формы |
| Honeypot | Тихий success без письма |
| Ошибка валидации | FetchIt error + переход к панели с ошибкой |
Нет секции с quiz_key | pagebuilder_fe_quiz_not_found |
JSON-определение
PageBuilderPro/core/components/pagebuilderpro/sections/quiz.json
Пресет: .../sections/presets/quiz-kitchen.json
