mrvinil
4/16/2017 - 8:47 PM

Кастомизация стандартной формы связи с AJAX

Кастомизация стандартной формы связи с AJAX

<?
// Алгоритм действий:
// 1. Правка почтового события для обратной связи: в типах – добавление поля #PHONE#, в событиях – правка письма 
// 2. Копирование компонента main.feedback в www/bitrix/components/custom/, в дальнейшем работаем с ним.
?>

<?
// 3. Правка файла .parametrs.php: 


    "REQUIRED_FIELDS" => Array(
      "NAME" => GetMessage("MFP_REQUIRED_FIELDS"),
      "TYPE"=>"LIST",                    
      "MULTIPLE"=>"Y",                    
      "VALUES" => Array( // Добавляем в массив свои поля
        "NONE" => GetMessage("MFP_ALL_REQ"),
        "NAME" => GetMessage("MFP_NAME"),
        "COMPANY" => GetMessage("MFP_COMPANY"),
        "PHONE" => GetMessage('MFP_PHONE'),  
        "EMAIL" => "E-mail", 
        "MESSAGE" => GetMessage("MFP_MESSAGE")
      ),                    
      "DEFAULT"=>"",                    
      "COLS"=>25,                    
      "PARENT" => "BASE",            
    ),
?>

<?
// 4. Правка верстки template.php

<div class="mf-name">
  <div class="mf-text">
    <?=GetMessage("MFT_PHONE")?>
      <?if(empty($arParams["REQUIRED_FIELDS"]) || in_array("PHONE", $arParams["REQUIRED_FIELDS"])):?>
        <span class="mf-req">*</span>
      <?endif;?>
  </div>
  <input type="text" name="user_phone" value="<?=$arResult["AUTHOR_PHONE"]?>">
</div>
?>

<?
// 5. Ну и правка соответственно файла component.php 

$arResult["ERROR_MESSAGE"] = array();
  if(check_bitrix_sessid())
  {
    if(empty($arParams["REQUIRED_FIELDS"]) || !in_array("NONE", $arParams["REQUIRED_FIELDS"]))
    {
      if((empty($arParams["REQUIRED_FIELDS"]) || in_array("NAME", $arParams["REQUIRED_FIELDS"])) && strlen($_POST["user_name"]) <= 1)
        $arResult["ERROR_MESSAGE"][] = GetMessage("MF_REQ_NAME");
        
          // проверка на обязательность. Добавляем свои поля.
          if((empty($arParams["REQUIRED_FIELDS"]) || in_array("COMPANY", $arParams["REQUIRED_FIELDS"])) && strlen($_POST["user_company"]) <= 1)
            $arResult["ERROR_MESSAGE"][] = GetMessage("MF_REQ_COMPANY");
           
          if((empty($arParams["REQUIRED_FIELDS"]) || in_array("PHONE", $arParams["REQUIRED_FIELDS"])) && strlen($_POST["user_phone"]) <= 1)
            $arResult["ERROR_MESSAGE"][] = GetMessage("MF_REQ_PHONE");
            
          if((empty($arParams["REQUIRED_FIELDS"]) || in_array("EMAIL", $arParams["REQUIRED_FIELDS"])) && strlen($_POST["user_email"]) <= 1)
          $arResult["ERROR_MESSAGE"][] = GetMessage("MF_REQ_EMAIL");
				    
          if((empty($arParams["REQUIRED_FIELDS"]) || in_array("MESSAGE", $arParams["REQUIRED_FIELDS"])) && strlen($_POST["MESSAGE"]) <= 3)
            $arResult["ERROR_MESSAGE"][] = GetMessage("MF_REQ_MESSAGE");
    }
    
    // Выдергивание из $POST для шаблона письма. Добавляем свои поля.
    $arFields = Array(
      "AUTHOR" => $_POST["user_name"],
      "COMPANY" => $_POST["user_company"],
      "PHONE" => $_POST["user_phone"],
      "AUTHOR_EMAIL" => $_POST["user_email"],
      "EMAIL_TO" => $arParams["EMAIL_TO"],
      "TEXT" => $_POST["MESSAGE"],
    );
?>

<?// 6. Вносим изменения в файлах lang/?>

<?// 7. Выводим компонент на страницу ?>

<?$APPLICATION->IncludeComponent(
	"websupps:main.feedback",
	"",
	Array(
		"EMAIL_TO" => "lass.tx@yandex.ru",
		"EVENT_MESSAGE_ID" => array(),
		"OK_TEXT" => "Спасибо, ваше сообщение принято.",
		"REQUIRED_FIELDS" => array(),
		"USE_CAPTCHA" => "Y",
		"AJAX_MODE" => "Y", // [Y|N] При установленной опции для компонента будет включен режим AJAX.
		"AJAX_OPTION_SHADOW" => "N", // [Y|N] Затемнять область
		"AJAX_OPTION_JUMP" => "N", // [Y|N] Если пользователь совершит AJAX-переход, то при установленой опции по окончании загрузки произойдет прокрутка к началу компонента.
		"AJAX_OPTION_STYLE" => "Y", // [Y|N] Если параметр принимает значение "Y", то при совершении AJAX-переходов будет происходить подгрузка и обработка списка стилей, вызванных компонентом.
		"AJAX_OPTION_HISTORY" => "N", //[Y|N] Когда пользователь выполняет AJAX-переходы, то при включенной опции можно использовать кнопки браузера Назад и Вперед.
		"COMPONENT_TEMPLATE" => ".default"
	)
);?>