Кастомная форма обратной связи для Битрикс

1. Создать файл-обработчик контроллер — send.php
В кодировке utf-8 без BOM

В обработчик send.php будут приходить данные из index.php

2. В index.php создаем форму

<form action="/send.php" method="POST">
<table>
<tr>
<td>Имя</td>
<td><input type = "text" name = "user_name" required></td>
</tr>
<tr>
<td>E-mail</td>
<td><input type = "text" name = "user_email"></td>
</tr>
</table>
<input type = "submit" name = "submit" value = "Отправить" />
</form>

3. В send.php

require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");

$USER_NAME = htmlspecialcharsEx($_POST["user_name"]);
$USER_EMAIL = htmlspecialcharsEx($_POST["user_email"]);

$arEventFields = array(
"USER_NAME" => $USER_NAME,
"USER_EMAIL" => $USER_EMAIL
);

4. В настройках продукта Bitrixпочтовые событиятипы почтовых событийсоздать новый тип события, например SEND_EMAIL

5. Создать html-шаблон письма в почтовые события — «Почтовые шаблоны». Там выбрать созданный ранее тип почтового события SEND_EMAIL. Заполнить поле от кого, после собаки должно быть имя домена сайта, чтоб письма не попадали в спам у получателя.
В шаблоне можно использовать константы например:

	Сообщение с сайта: #SITE_NAME#
Имя : #USER_NAME#
E-mail: #USER_EMAIL#

6. Добавить в send.php класс отправки письма и перенаправление на нужную страницу в конце:

CEvent::Send("SEND_EMAIL", "s1", $arEventFields, "N", "", "");
// 1 аргумент - Идентификатор типа почтового события.
// 2 аргумент - Идентификатор сайта, либо массив идентификаторов сайта.
// 3 аргумент - Массив полей типа почтового события идентификатор которого задается в параметре event_type. Массив имеет следующий формат: array("поле"=>"значение" [, ...]).
// 4 аргумент - Отправить ли копию письма на адрес указанный в настройках главного модуля
// 5 аргумент - Идентификатор почтового шаблона по которому будет отправлено письмо.
//Если данный параметр не задан, либо равен "", то письма будут отправлены по всем шаблонам привязанным к типу почтового события, идентификатор которого задается в параметре event_type, а также привязанных к сайту(ам) идентификатор которого указан в параметре site.
//Необязательный. По умолчанию - "".
// 6 аргумент - Массив идентификаторов файлов, которые используются классом CFile. Либо можно передать массив абсолютных путей до файлов.

header("Location: /contacts/"); //Перенаправление на страницу после отработки скрипта

В итоге send.php:

require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");

$USER_NAME = htmlspecialcharsEx($_POST["user_name"]);
$USER_EMAIL = htmlspecialcharsEx($_POST["user_email"]);

$arEventFields = array(
"USER_NAME" => $USER_NAME,
"USER_EMAIL" => $USER_EMAIL
);

CEvent::Send("SEND_EMAIL", "s1", $arEventFields, "N", "", "");
// 1 аргумент - Идентификатор типа почтового события.
// 2 аргумент - Идентификатор сайта, либо массив идентификаторов сайта.
// 3 аргумент - Массив полей типа почтового события идентификатор которого задается в параметре event_type. Массив имеет следующий формат: array("поле"=>"значение" [, ...]).
// 4 аргумент - Отправить ли копию письма на адрес указанный в настройках главного модуля
// 5 аргумент - Идентификатор почтового шаблона по которому будет отправлено письмо.
//Если данный параметр не задан, либо равен "", то письма будут отправлены по всем шаблонам привязанным к типу почтового события, идентификатор которого задается в параметре event_type, а также привязанных к сайту(ам) идентификатор которого указан в параметре site.
//Необязательный. По умолчанию - "".
// 6 аргумент - Массив идентификаторов файлов, которые используются классом CFile. Либо можно передать массив абсолютных путей до файлов.

header("Location: /contacts/"); //Перенаправление на страницу после отработки скрипта

 

 

Поделись, если оказалось полезно :)
Нет комментариев

Написать