Задать вопрос
@Sky161
Начинающий Web-разработчик

Как создать форму с отправкой на почту и записью в инфоблок?

Как в Битриксе создать форму которая при отправке будет скидывать письмо на почтовый ящик и записывать информацию отправленную с формы в элемент инфоблока?
Форма без компонентов, обычная, HTML.
  • Вопрос задан
  • 13952 просмотра
Подписаться 6 Оценить Комментировать
Решения вопроса 1
@Sky161 Автор вопроса
Начинающий Web-разработчик
Сделал все следующим образом:
<?require_once($_SERVER['DOCUMENT_ROOT'].'/PHPMailer/class.phpmailer.php');
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

$mail_body = implode('/n', $_POST)

/*запись данных в инфоблок*/ 
$arLoadProductArray = Array( "MODIFIED_BY" => $USER->GetID(),
    "IBLOCK_SECTION_ID" => false,
    "IBLOCK_ID" => 24,
    "NAME" => $_POST['name_organization'],
    "ACTIVE" => "N",
    "DETAIL_TEXT" => $mail_body, 
    ); 
CModule::IncludeModule("iblock"); 
$element = new CIBlockElement; 
if($product_ID = $element->Add($arLoadProductArray)){ 
    
    /*отправка формы*/ 
    $mail = new PHPMailer;
    $mail->From = "no-replay@terrafrigo.ru";
    $mail->FromName = "no-replay";
    $mail->AddAddress('почта куда идут письма');

    $mail->isHTML(true);
    $mail->CharSet = 'UTF-8'; 
    $mail->Subject = 'тема письма'; 
    $mail->Body = $mail_body;

    if($mail->Send()){ 
        echo 'Отправлено';
    }
    echo 'Элемент записан ('.$product_ID.') '; 
}else{ 
    echo "Error: ".$element->LAST_ERROR.' '; 
}


Для отправки писем используется плагин - https://github.com/PHPMailer/PHPMailer
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Express777
@Express777
Это достаточно просто, если вас устроит стандартный функционал.

Есть простой компонент в битриксе. Называется "форма добавления и редактирования элементов".
joxi.ru/52aNjzZIRedxA0
Подключаете, настраиваете, в частности в какой инфоблок добавлять элемент.
Шаблон у него, конечно, не ахти. Скорее всего, нужно будет поменять. Но это уже другая задача.
С первой задачей справились.

Отправка письма.
Скопируйте стандартный компонент /bitrix/components/bitrix/iblock.element.add.form в папку /bitrix/components/my_components/
Надеюсь, знаете про правило никогда не редактировать стандатные компоненты. Править только скопированнный.
Открываете файл component.php компонента iblock.element.add.form.
Ищите комментарий // add new element . Это один из редчайших файлов в битриксе, где есть комментарий. Ура!
Вставляете в условие
joxi.ru/12M7aYNTY1xBrJ
https://dev.1c-bitrix.ru/api_help/main/reference/c...
CEvent::SendImmediate
(
$event,
$lid,
$arFields,
$Duplicate = "Y",
$message_id=""
)
Если у вас нестандартный шаблон письма. Вам, скорее всего, нужно будет создать новые тип и шаблон почтового события. Но это, уже другая задача.

Все. Добавляйте элементы
Ответ написан
Комментировать
С одной стороны поддержу Express777 , а с другой сам я делаю без кастомизации компонента - пусть он останется в покое.
Просто сделайте перехват события добавления элемента в нужный вам инфоблок и в перехватчике отправляйте уведомление.
Ответ написан
@Desving
Всё это можно сделать в файле на который отправляется форма, при наличие массива $_POST делать добавление в инфоблок и отправку сообщения.
добавление в инфоблок
отправка письма
хотя отправку можно сделать и обычным mail php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы