+7 (812) 914-82-98
Реклама в интернете

Реклама в интернете

Рекламное интернет-агентство «Heika» в Санкт-Петербурге предлагает ряд эффективных рекламных решений.

Читать далее

Создание сайтов

Создание сайтов

Создание сайта – большой проект. Эффективность вашего бизнеса в интернете зависит от комплексного подхода к решению задач.

Читать далее

Продвижение сайтов

Продвижение сайтов

Мы создаем сайт, учитывая принципы оптимизации сайта и психологию пользователя (оптимизированный html-код, оригинальность дизайна).

Читать далее

На главную Heika.ru

Битрикс форма с подпиской email на рассылку

Добавлено 14.10.2022

Иногда бывает нужно создать форму где email будет сразу попадать в подписку. Пример такой формы на Битрикс.

Пример формы с подпиской

В админке создаём форму в "Сервисы">"Веб-формы"

Используем свой шаблон

<?
if($FORM->ShowFormNote()){?> 
<p>Спасибо за подписку.</p>
 <?}else{?> 
<div class="name mb20"> 
  <h4><?=$FORM->ShowFormTitle("")?></h4>
 </div>
 
<div class="status mb20"> 
  <div class="title mb20"><?=$FORM->ShowInputCaption("email","")?>:</div>
 
  <div class="email mb20"><?=$FORM->ShowInput('email')?></div>
 </div>
 
<div class="status mb20"> 
  <div class="title mb20"><?=$FORM->ShowInputCaption("status","")?>:</div>
 <?=$FORM->ShowInput('status')?> </div>
 <hr>	 
<div class="submit mb20"><?=$FORM->ShowInput('info')?></div>
 <?=$FORM->ShowSubmitButton("","")?> 
<div></div>
 
<div class="note"> <?=$FORM->ShowFormErrors()?> </div>
 <?}?> 
 

Добавляем код вызова формы в шаблоне:

<? $APPLICATION->IncludeComponent("bitrix:form.result.new", "main", Array(
	"CACHE_TIME" => "3600",	// Время кеширования (сек.)
		"CACHE_TYPE" => "A",	// Тип кеширования
		"CHAIN_ITEM_LINK" => "",	// Ссылка на дополнительном пункте в навигационной цепочке
		"CHAIN_ITEM_TEXT" => "",	// Название дополнительного пункта в навигационной цепочке
		"EDIT_URL" => "",	// Страница редактирования результата
		"IGNORE_CUSTOM_TEMPLATE" => "N",	// Игнорировать свой шаблон
		"LIST_URL" => "",	// Страница со списком результатов
		"SEF_MODE" => "N",	// Включить поддержку ЧПУ
		"SUCCESS_URL" => "",	// Страница с сообщением об успешной отправке
		"AJAX_MODE" => "Y",  // режим AJAX
                "AJAX_OPTION_SHADOW" => "N", // затемнять область
                "AJAX_OPTION_JUMP" => "Y", // скроллить страницу до компонента
                "AJAX_OPTION_STYLE" => "Y", // подключать стили
                "AJAX_OPTION_HISTORY" => "N",
		"USE_EXTENDED_ERRORS" => "N",	// Использовать расширенный вывод сообщений об ошибках
		"WEB_FORM_ID" => "5",	// ID веб-формы
		"COMPONENT_TEMPLATE" => ".default",
		"VARIABLE_ALIASES" => array(
			"WEB_FORM_ID" => "WEB_FORM_ID",
			"RESULT_ID" => "RESULT_ID",
		)
	),
	false
);?>

Затем в /bitrix/php_interface/init.php добавить подписку по событию:

<?
include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/wsrubi.smtp/classes/general/wsrubismtp.php");
function my_onBeforeResultAdd($WEB_FORM_ID, &$arFields, &$arrVALUES)
{
  global $APPLICATION;
  if ($WEB_FORM_ID == 2){
  	//$APPLICATION->ThrowException(var_dump($arrVALUES));

  	$email = $arrVALUES["form_email_6"];

    if( $arrVALUES["form_radio_info"] == 11){
	  	$RUB_ID = "4";
	}elseif($arrVALUES["form_radio_status"] == 7){
	  	$RUB_ID = "1";
	}elseif($arrVALUES["form_radio_status"] == 8){
	  	$RUB_ID = "2";
	}elseif($arrVALUES["form_radio_status"] == 9){
	  	$RUB_ID = "3";
	}
  }
  if($email and $RUB_ID){
  	$subscrube_field = Array(
    	"FORMAT" => "html",
   		"EMAIL" => $email,
   		"ACTIVE" => "Y",
   		"RUB_ID" => array($RUB_ID),
   		"CONFIRMED" => "Y",
   		"SEND_CONFIRM" => 'N'
	);
	CModule::IncludeModule('subscribe');

  $check_sub = CSubscription::GetByEmail($email);

  $subscr = new CSubscription;

  //ищем подписку, обновлем, если есть
  if($arSub = $check_sub->Fetch()){     
      $subscr->Update($arSub["ID"], $subscrube_field);
  }else{	  
	    $ID = $subscr->Add($subscrube_field);
    }
  }
}
AddEventHandler('form', 'onBeforeResultAdd', 'my_onBeforeResultAdd');


AddEventHandler('subscribe', 'OnStartSubscriptionAdd', 'my_OnStartSubscriptionAdd');

function my_OnStartSubscriptionAdd(&$arFields)
{
	if($arFields['RUB_ID'][0] == 5){
		CModule::IncludeModule("form");
		$FORM_ID = 4;
		$arValues = array (
		    "form_text_18"  => $arFields['EMAIL']
		);
		$RESULT_ID = CFormResult::Add($FORM_ID, $arValues);
	}
}

?>

Добавить комментарий:

Для того, чтобы добавить коментарий, авторизируйтесь.