Заполнить виджет данными
Иногда виджет регистрации на событие нужно использовать как часть какого-то более сложного процесса регистрации. В этом случае данные об участниках уже известны, и не хочется вынуждать пользователя вводить их повторно.
Для этого не нужно писать никакого кода, достаточно правильно передать нужные параметры в виджет.
Общая схема настроек, передаваемых в виджет, выглядит следующим образом:
prefill:
# исходим из того, что иногда нужно передать данные о нескольких участниках
attendees:
-
mail: prefilled1231231231@ya.ru
surname: Петров
name: Иван
phone: +7 (777) 777-77-77
id_вопроса1: Ответ на вопрос 1
# Ответы на "мастер-вопросы", которые могут существовать при использовании режима мультианкет
order:
order_mail: емейл@заказчика
id_мастер_вопроса1: Ответ на мастер-вопрос 1
# Поле aux сохраняется и доступно из webhook (http://dev.timepad.ru/api/hooks/). Передав его тут, можно будет в дальнейшем найти по нему соответствующую регистрацию.
aux:
foo: bar
# Сразу ввести промокоды. Поле промокода при этом будет скрыто (вне зависимости от правильности промокода). Автоскрытие можно отключить, установив настройку hidePromocodeInput: "never"
promocodes:
- "some_code"
Пример
Давайте попробуем простейший вариант: нам известно, что наш участник – Иван Иванов с почтой iivanov@mail.ru и телефоном, и в БД сайта, на котором стоит виджет, его ID - 14.
Для начала возьмите код вашего виджета в системе. Теперь изменим его настройки, добавив раздел о prefill:
<script type="text/javascript" defer="defer" charset="UTF-8" data-timepad-customized="АЙДИ_ВАШЕЙ_КАСТОМИЗАЦИИ" data-twf2s-event--id="АЙДИ_ВАШЕГО_СОБЫТИЯ" data-timepad-widget-v2="event_register" src="https://timepad.ru/js/tpwf/loader/min/loader.js">
(function() {
return {
"prefill": {
"attendees": [
{
"name": "Иван",
"surname": "Иванов",
"mail": "iivanov@mail.ru"
}
],
"aux": {
"our_user": 14
}
}
};
})();
</script>
Готово!
Если в форме регистрации есть дополнительные вопросы, ответы на которые тоже хочется записать передать, то и это возможно:
Если это поле "Телефон", которое было распознано нашей системой (это происходит с первым вопросом, который содержит в названии "Телефон"), то просто передайте поле phone
:
{
"name": "Иван",
"surname": "Иванов",
"mail": "iivanov@mail.ru",
"phone": "+7 (777) 777-77-77"
}
Если это какой-то текстовый вопрос (например, "Из какого вы города"), то вам понадобится узнать его ID. Сделать это можно множеством способов, самый простой – получить событие через API. Для этого перейдите по ссылке https://api.timepad.ru/v1/events/id-вашего-события
(не забудьте подставить ID вашего события) и вы увидите вопросы с field_id вида question8812736 в разделе questions. 8812736 – это и есть ID вопроса. Используйте его так:
{
"name": "Иван",
"surname": "Иванов",
"mail": "iivanov@mail.ru",
"8812736": "Москва"
}
Если это вопрос с выбором вариантов ответа, загрузки файла, или еще что-то сложное, то механизм prefill вам, к сожалению, не поможет. Придётся писать свой код заполнения формы регистрации.
Если вы хотите выбрать за пользователя тип и количество билетов, то это поведение также нужно реализовать самостоятельно.
Предзаполнение через URL
Кроме передачи параметров через настройки, их можно передавать через адрес (ссылку на страницу с виджетом). Для кодирования параметров используйте нотацию html-форм вроде той, что выдаёт jquery.param. Все фрагменты префиксуются строкой twf_prefill_
. Пример с Иваном Ивановым и промокодом "Ку" выглядел бы так:
https://сайт_где_установлен_виджет/?twf_prefill_promocodes[]=Ку&twf_prefill_attendees[0][name]=Иван&twf_prefill_attendees[0][surname]=Иванов&twf_prefill_attendees[0][mail]=iivanov@mail.ru&twf_prefill_aux[][our_user]=14
Указание индексов массивов необходимо, если вы пытаетесь добавить в массив больше одного элемента. Например, два промокода надо будет записать так: &twf_prefill_promocodes[0]=Ку&twf_prefill_promocodes[1]=Куку&
.
Имейте в виду, что длина адресов ограничена, а русские буквы считаются за несколько символов. Обязательно проверяйте, что ваша ссылка распознаётся корректно!