4.5 KiB
Контактные формы
Модуль contacts создаёт публичные формы без системных блоков: обратную связь,
заявки, анкеты и другие обращения. Публичная часть принимает данные, а панель
хранит историю, статусы и ответы.
Создание формы
- Откройте Модули → Контактные формы и создайте форму.
- Укажите название и уникальный alias.
- Добавьте поля, настройте обязательность, подписи и варианты значений.
- Заполните получателей в формате
Название|email. - Настройте шаблоны формы, результата и письма.
- Сохраните форму и вставьте
[mod_contacts:<alias>]в документ, шаблон или блок.
Поддерживаются однострочный и многострочный текст, список, множественный список,
checkbox, radio, файл, один документ и несколько документов. Тег конкретного
поля показывается в редакторе и имеет вид [tag:fld:<id>].
Форму также можно открыть по адресу /contacts/<alias>. Служебный адрес
/callback использует форму с alias callback, если она существует.
Приём и защита
Публичная отправка проверяет CSRF, обязательные значения, типы полей и загрузки.
Honeypot и ограничение частоты защищают от простого спама. Ajax-запрос получает
JSON, обычная форма после обработки возвращается через redirect. История хранит
снимок отправленных значений и имеет состояния new, viewed, replied.
В историю попадают только активные поля формы с их подписями. CSRF, служебные параметры маршрутизации, captcha и поля с паролями или токенами не сохраняются. Для старых обращений эти значения дополнительно скрываются при просмотре.
В HTML-письмах значения [tag:fld:<id>], [tag:title:<id>], [tag:easymail]
и системных тегов всегда экранируются, а итоговая разметка проходит разрешающий
HTML-фильтр. Тема письма, имя и адрес отправителя обрабатываются отдельно как
однострочные заголовки: HTML и переводы строк в них не допускаются. Поэтому
разметку письма задаёт только администратор, а посетитель не может передать через
поле формы исполняемый HTML или дополнительный почтовый заголовок.
Подключение модуля защиты от спама дополняет, но не отменяет встроенное ограничение частоты. Даже если внешний обработчик принял запрос, лимит формы продолжает действовать.
Новое обращение появляется в уведомлениях панели. Открытие записи отмечает её просмотренной. Ответ сохраняется в истории и отправляется посетителю, когда у обращения есть корректный email.
Права:
view_contacts— формы и история;manage_contacts— формы, поля, копирование и удаление;reply_contacts— ответы на обращения.
Форму с существующей историей нельзя удалить случайно. Деинсталляция модуля удаляет формы, поля и всю историю, поэтому перед ней экспортируйте нужные заявки.