Кастомизация стандартной формы связи с 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"
)
);?>