1С-Битрикс — простая отправка почты, AJAX

22.11.2019  07:25

В Битриксе есть веб-формы, но они как-то кривовато реализованы, проще письма отправлять своими скриптами, с использованием API Битрикса и родных шаблонов.

JavaScript:
$(document).ready(function(){
  	$(".footer__form form").submit(function() {
		var th = $(this);
		th.find(".form-result").remove();
		$.ajax({
			type: "POST",
			url: "/ajax/feedback_form.php",
			data: th.serialize()
		}).done(function(data) {
			// alert(data);
			if (data == 'ok') {
				// th.find(".form-group,.text-center").hide();
				th.append('
Заявка принята!
'); setTimeout(function() { // Done Functions th.trigger("reset"); }, 1000); } }); return false; }); });


PHP (отправка письма + сохранение в инфоблок):
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$APPLICATION->RestartBuffer();
if($_REQUEST) {
   $arReqFields = Array("AUTHOR_NAME");//NAME
	if(empty($_REQUEST["user_phone"])) {$arResult["ERRORS"] = 'user_phone';}
    if(strlen($arResult["ERRORS"]) <= 0) {
	$IBLOCK_ID = 21;
	CModule::IncludeModule("iblock");
	$obE = new CIBlockElement();
        $arProp["AUTHOR"] = trim($_REQUEST["user_name"]);
        $arProp["PHONE"] = trim($_REQUEST["user_phone"]);
        $arProp["EMAIL"] = trim($_REQUEST["user_email"]);
        $arProp["MESSAGE"] = trim($_REQUEST["MESSAGE"]);
        $date = date("d.m.Y H:i:s");
			$arResult["SUCCESS"] = GetMessage("FORM_SEND");
			$arEventFields = array(
				"DATE" => $date,
				"AUTHOR" => $arProp["AUTHOR"],
				"EMAIL" => $arProp["EMAIL"],
				"MESSAGE" => $arProp["MESSAGE"],
				"PHONE" => $arProp["PHONE"],
			);
// отправка письма:
			CEvent::Send("CALLBACK_SEND", Array(SITE_ID), $arEventFields);
			// сохранение в инфоблок:
			$obE = new CIBlockElement();
			$arFields["IBLOCK_ID"] = $IBLOCK_ID;
			$arFields["ACTIVE"] = "Y";
			$arFields["NAME"] = $arProp["AUTHOR"];
			$arFields["PREVIEW_TEXT"] = $arProp["MESSAGE"];
			$arProps["PHONE"] = $arProp["PHONE"];
			$arProps["SITE_ID"] = $arrCities[SITE_ID];
			if ( $ID = $obE->Add($arFields) ) {
				CIBlockElement::SetPropertyValuesEx($ID, $IBLOCK_ID, $arProps);
				// echo 'added';
			}
			// db 
    }
} else {
    $arResult["ERRORS"] = GetMessage("UNKNOWN_ERROR");
}
if ($arResult["SUCCESS"]) {
	echo 'ok';
	// print_r($arResult["SUCCESS"]);
}
else {
	if ($arResult["ERRORS"]) print_r($arResult["ERRORS"]);
}


Почтовый шаблон:




Всё! Сделать отправку писем — дело получаса.
Андрей Панёвин
Здравствуйте! Я — Андрей Панёвин и занимаюсь профессиональной разработкой сайтов на платформе 1С-Битрикс (исключительно программирование). Есть вопросы по статье? Могу подсказать и помочь по скайпу (andrey.panevin.ru), WhatsApp (+7-911-091-0670) или перепиской в ВК.
1000 р./час.






Помогла статья? На поездку на море (Охотское):


перейти в Блог

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): 1С-Битрикс 58  PHP 72  web-программирование 96  

Вам есть что сказать — ну я же чую.
Высказаться о наболевшем, я выслушаю-:
Имя


email (не публикуется)