Архив рубрики: 1C-Битрикс

Операции с пользователями битрикс (про пользователей битрикс)

Как узнать что пользователь авторизирован?
<?if ($USER->IsAuthorized()){
echo «Пользователь авторизирован»; } ?>

Как узнать код подтверждения пользователя (CONFIRM_CODE)?
Приведу пример вывода списка всех пользователей (активных и неактивных) с выводом их в таблицу. Так думаю будет наглядно:

<table align=»center» border=»1″ width=»70%» cellspacing=»0″ cellpadding=»0″ >
<tr>

<td style=»border: 1px solid #333333; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px» bgcolor=»#CCCCCC»>ID</td>
<td style=»border: 1px solid #333333; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px» bgcolor=»#CCCCCC»>Логин</td>
<td style=»border: 1px solid #333333; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px» bgcolor=»#CCCCCC»>Имя</td>
<td style=»border: 1px solid #333333; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px» bgcolor=»#CCCCCC»>Фамилия</td>
<td style=»border: 1px solid #333333; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px» bgcolor=»#CCCCCC»>Код подтверждения</td>

</tr>
<?
$rsUsers = CUser::GetList(($by=$USER->GetID()), ($order=»desc»), $filter);
$is_filtered = $rsUsers->is_filtered;
$rsUsers->NavStart(50);
echo $rsUsers->NavPrint(GetMessage(«PAGES»));
while($rsUsers->NavNext(true, «f_»)) :
?>

<tr>

<td ><?echo $f_ID?></td>
<td ><?echo $f_LOGIN?></td>
<td ><?echo $f_NAME?></td>
<td ><?echo $f_LAST_NAME?></td>
<td ><?echo $f_CONFIRM_CODE?></td>

</tr>

<?endwhile;?>
</table>
<?}?>

1

Как узнать, что пользователь администратор?
<?global $USER;
if ($USER->IsAdmin()) echo «Вы администратор!»;?>
1

Изменение размера изображения
Если вам необходимо изменить программно размер изображения, например, большую картинку подогнать под нужный размер автоматически, используем нижеприведенный код:

<?
$Width1 = 174;
$Height1 = 139;
$Ratio1 = $Width1 / $Height1;
$Width2 = $arResult[«DETAIL_PICTURE»][«WIDTH»];
$Height2 = $arResult[«DETAIL_PICTURE»][«HEIGHT»];
$Ratio2 = $Width2 / $Height2;

if (($Width2 > $Width1) or ($Height2 > $Height1)) {

if ($Ratio2 > $Ratio1) {

$SizeStr = » width=\»$Width1\»»;

}
else {

$SizeStr = » height=\»$Height1\»»;

}

}
?>
<a href=»<?=$arResult[«DETAIL_PICTURE»][«SRC»]?>»>

<img src=»<?=$arResult[«DETAIL_PICTURE»][«SRC»]?>» <?=$SizeStr?> />

</a>

1

Как узнать ID авторизированного пользователя?
При работе со скриптами Bitrix необходимо узнать ID авторизированного пользователя или его логин, e-mail. Для этого используем конструкцию:

<?
global $USER;
echo «[«.$USER->GetID().»] («.$USER->GetLogin().») «.$USER->GetFullName();
?>

Для более детального просмотра параметров пользователя, включая дополнительно созданные поля, используем конструкцию:

$rsUser = CUser::GetByID($USER->GetID());
$arUser = $rsUser->Fetch();

Переменная $arUser будет содержать параметры пользователя. Очень удобная вещь.

Записать данные в txt через php (любые даже Битрикса)

<?$field = «»; // Инициализируем пустой строкой переменную, где будем хранить все параметры из полученного массива $_POST
reset($_POST); // На всякий случай индекс массива устанавливаем в начальное положение, т.е. обеспечиваем доступ к самому первому элементу массива в самой первой итерации следующего цикла.

$f_out = fopen( «targets.txt» , «a»);
$username .= «Id: [«.$USER->GetID().»] \r\nЛогин:(«.$USER->GetLogin().») \r\nФИО:[«.$USER->GetFullName().»] \r\nЦель: $target \r\n»;
fwrite($f_out, $username); // Записываем текст в файл
fclose($f_out); // Закрываем файл

// Организуем цикл, где считываем каждый элемент массива и преобразуем его в пару параметров «Имя_поля = значение» и добавляем его в переменную $field для последующей записи в файл как один единый текст в стиле INI
while (list ($key, $val) = each ($_POST))
// Добавляем очередную пару «Имя_поля = значение»
$field .= «$key = $val \r\n»;

// Если есть что записывать в файл, то …
if ($field!=»») {
$f_out = fopen( «targets.txt» , «a»); // Открываем файл «form.ini» для записи
fwrite($f_out, $field); // Записываем текст в файл
fclose($f_out); // Закрываем файл

$f_out = fopen( «targets.txt» , «a»);
$probel .= «—\r\n»;
fwrite($f_out, $probel); // Записываем текст в файл
fclose($f_out); // Закрываем файл
}?>

Вывод пользовательских свойств в БИТРИКСЕ

Фильтрация

Пользовательские поля разделов могут принимать участие в фильтрации.

$sec_Filter= array(  
   "IBLOCK_ID" => $IBLOCK_ID, 
   "DEPTH_LEVEL" => "2", 
   "!UF_ARC_PAGES" => ""
);

 

Примечание: Фильтрация по пользовательским полям работает только при наличии фильтра по IBLOCK_ID.

 

Будут отобраны все разделы, у которых установлено значение свойства UF_ARC_PAGES.

 

 

Фильтрация по значению пользовательского свойства:

$arSFilter ['=UF_USERS_PROPERTY'] =$users_property_value;

Сортировка

Сортировать по пользовательским полям разделов:

    $arSort = array(
       "UF_RATING"=>"asc",
       "sort"=>"asc"

   );

Получение значений

Получить значение пользовательского поля можно с помощью метода GetList соответствующего класса.

Значение пользовательского поля для пользователя с ID=2 можно таким образом:

$rsUser = CUser::GetByID($user);
$arUser = $rsUser->Fetch();
$нужное значение = $arUser['код пользовательского поля'];

 

 

Чтобы получить значение пользовательского поля определенного пользователя, тип поля – строка, необходимо воспользоваться методом GetListкласса CUser. При этом в качестве четвертого аргумента данному методу необходимо передать массив с ключом SELECT, значениями которого являются список кодов пользовательских свойств, которые необходимо получить.

global $USER;
$arFilter = array("ID" => $USER->GetID());
$arParams["SELECT"] = array("UF_USER_CARD_CODE");
$arRes = CUser::GetList($by,$desc,$arFilter,$arParams);
    if ($res = $arRes->Fetch()) {
        echo $res["UF_USER_CARD_CODE"];
    }

 

 

Если тип пользовательского поля список, то для получения значения (или значений, если возможен множественный выбор) нужно воспользоваться методом GetList класса CUserFieldEnum.

global $USER;
$arFilter = array("ID" => $USER->GetID());
$arParams["SELECT"] = array("UF_LIST_TASK");
$arRes = CUser::GetList($by,$desc,$arFilter,$arParams);
    if ($res = $arRes->Fetch()) {
        foreach ($res["UF_LIST_TASK "] as $id) {
                $rsRes= CUserFieldEnum::GetList(array(), array(
                    "ID" => $id,
                ));
                if($arResult = $rsRes->GetNext())
                    echo $arGender["VALUE"];
            }   
}

 

 

Если необходимо получить список всех значений пользовательского поля объекта USER типа список, то следует воспользоваться следующим кодом:

global $USER_FIELD_MANAGER;
$arFields = $USER_FIELD_MANAGER->GetUserFields("USER");
$obEnum = new CUserFieldEnum;
$rsEnum = $obEnum->GetList(array(), array("USER_FIELD_ID" => $arFields["UF_LIST_TASK "]["ID"]));
while($arEnum = $rsEnum->GetNext()){
   echo $arEnum["VALUE"];
}

 

 

Для выбора значения пользовательского поля у секции информационного блока можно воспользоваться методом CIBlockSection:GetList:

	
$aSection   = CIBlockSection::GetList( array(), array(
    'IBLOCK_ID'         => 3,
    'CODE'          => 'test_section',
), false, array( 'UF_DEV2DAY_FIELD' ) )->Fetch();

 

Примечание: Передача идентификатора инфоблока (IBLOCK_ID) обязательна, иначе выборка пользовательских свойств не будет осуществлена.

 

 

 

Получение значения пользовательского поля типа файл конкретной секции инфоблока:

$rsResult = CIBlockSection::GetList(array("SORT" => "ASC"), array("IBLOCK_ID" => "1"), false, $arSelect = array("UF_*"));
while ($arResult = $rsResult -> GetNext())
{
print "
" . print_r($arResult, true) . "
"; }

 

 

Так как пользовательские поля можно использовать не только с разделами информационного блока, но и с любыми другими сущностями, то для выбора значений по идентификатору сущности используется класс CUserTypeManager. Экземпляр данного класса уже находится в глобальной переменной $USER_FIELD_MANAGER.

	
global $USER_FIELD_MANAGER;

$aSection   = CIBlockSection::GetList( array(), array(
    'IBLOCK_CODE'   => 'shop_news',
    'CODE'          => 'test_section',
) )->Fetch();

if( !$aSection ) {
    throw new Exception( 'Секция не найдена' );
}

$aUserField = $USER_FIELD_MANAGER->GetUserFields(
'IBLOCK_3_SECTION',
$aSection['ID']
); // array

В результате мы получим массив содержащий в себе всю информацию о поле и его значении для конкретного объекта.

 

Примечание: Чтобы получить все значения пользовательских полей в параметре arSelect достаточно указать Array(«UF_*»).

ДОБАВИТЬ И ВЫВЕСТИ ЗНАЧЕНИЕ СВОЙСТВА РАЗДЕЛА (ПОЛЬЗОВАТЕЛЬСКОГО ПОЛЯ) В БИТРИКСЕ

И снова свойства, но уже разделов. 

Очень часто, делая каталог на 1С-Битриксе, требуется задать свойства и разделам, не только элементам. В стандартном функционале у нас есть только изображение и описание.

Чтобы вывести изображение раздела, нужно в шаблоне catalog.section прописать следующий код:

Код<?php if ($arResult["PICTURE"]["SRC"]) {?>
<a onclick="return hs.expand(this)" title="<?=$arResult["NAME"]?>" href="<?=$arResult["PICTURE"]["SRC"]?>">
<img style="width:300px" src="<?=$arResult["PICTURE"]["SRC"]?>" title="<?=$arResult["NAME"]?>" />
<?php } else { ?><?php }?>

Чтобы было яснее, у меня идет сначала проверка, есть ли фотография, а потом идет вывод фотографии, там class и onclick — это остатки от галереи, не обращайте на них внимания. Если фотографии нет, то ничего и не выводится.

Чтобы вывести описание раздела, в шаблоне catalog.section прописываем код:

Код<?=$arResult["DESCRIPTION"]?>

Или для раздела news.list, если параметр выдается в виде массива Array:

Код<?foreach($arResult["SECTION"]["PATH"] as $arSection):?>
<?=$arSection["DESCRIPTION"]?>
<?endforeach;?>

Теперь самая соль.

Чтобы задать дополнительное свойство раздела, нужно использовать Пользовательские поля.
Заходим в свойства раздела, выбираем вкладку «Доп. свойства» и нажимаем на «Добавить пользовательское поле».
Создаете нужное поле требуемого типа и сохраняете. Потом в Свойствах раздела вы заполняете ваше созданное свойство раздела.
Теперь, самое главное, чтобы вывести свойство раздела (пользовательское поле) нужно, всё в том же шаблоне catalog.section прописать следующий код:

Для НЕ МНОЖЕСТВЕННОГО свойства раздела (пользовательского поля):

Код<?
$db_list = CIBlockSection::GetList(Array($by=>$order), $arFilter = Array("IBLOCK_ID"=>$arResult["IBLOCK_ID"], "ID"=>$arResult["ID"]), true,$arSelect=Array("UF_DOC"));
while($ar_result = $db_list->GetNext()):
?>
<?=CFile::GetPath($ar_result["UF_DOC"]); ?>
<?endwhile?>

Для МНОЖЕСТВЕННОГО свойства раздела (пользовательского поля):

Код<?
$db_list = CIBlockSection::GetList(Array($by=>$order), $arFilter = Array("IBLOCK_ID"=>$arResult["IBLOCK_ID"], "ID"=>$arResult["ID"]), true,$arSelect=Array("UF_FILE"));
while($ar_result = $db_list->GetNext()):
?>
<?foreach($ar_result["UF_FILE"] as $PHOTO):?>
<?=CFile::GetPath($PHOTO); ?>
<?endforeach?>
<?endwhile?>

В данном случае код используется CFile::GetPath, чтобы вывести ссылку на файл, дальше обработать ее, думаю, не составит труда.

Таким образом для значения типа данных «Файл» используем:

Код<?=CFile::GetPath($PHOTO); ?>

а, чтобы вывести текстовое значение поля типа данных «Строка»:

Код<?=$ar_result["UF_TEXT"] ?>

Для вывода пользовательского поля в шаблоне catalog.section.list я использовал следующий кода:

Код<?
$db_list = CIBlockSection::GetList(Array($by=>$order), $arFilter = Array("IBLOCK_ID"=>$arSection["IBLOCK_ID"], "ID"=>$arSection["ID"]), true,$arSelect=Array("UF_ACT"));
while($ar_result = $db_list->GetNext()):
?>
<? if ($ar_result["UF_ACT"]):?>
<font color="red">Акция!</font>
<? endif ?>
<?endwhile?>
 

отправка письма пользователю при регистрации битрикс

Отправка почтового сообщения с учётной записью зарегистрировавшегося пользователя. Для этого можно использовать событие модуля Main — «OnAfterUserRegister»:
<?
AddEventHandler("main", "OnAfterUserRegister", Array("MyClass", "OnAfterUserRegisterHandler"));
class MyClass
{
   function OnAfterUserRegisterHandler(&$arFields)
	{
	     $message = "Информационное сообщение сайта Интернет-магазин\n";
	     $message.="Ваш логин: ".$arFields["LOGIN"]."\nВаш парол: ".$arFields["PASSWORD"]."\n";
	     mail($arFields["EMAIL"], 'Регистрационные данные с сайта shop.ru', $message, '[email protected]');
	}
}
?>

После успешной регистрации мы отправляем пользователю учётную запись с использованием функции mail().

   Это несомненно быстрее по выполнению и менее затратно по времени. Есть более правильный способ, использовать класс CEvent(работает с почтовыми событиями в Bitrix). Мы можем создать собственный тип почтового события через административную часть и создать к нему почтовый шаблон. Данный механизм гораздо удобнее с точки зрения автоматизации решений.
   Для использования метода Send класса CEvent, нам необходимо передать в него массив регистрационной информации.
<?
AddEventHandler("main", "OnAfterUserRegister", Array("MyClass", "OnAfterUserRegisterHandler"));
class MyClass
{
   function OnAfterUserRegisterHandler(&$arFields)
	{
	     $arEventFields= array(
			"LOGIN" => $arFields["LOGIN"],
			"NAME" => $arFields["NAME"],
			"LAST_NAME" => $arFields["LAST_NAME"],
			"PASSWORD" => $arFields["PASSWORD"],
			"EMAIL" => $arFields["EMAIL"],
			"SERVER_NAME" => "shop.su",
			);
	     CEvent::Send("MAIN_USER_INFO", SITE_ID, $arEventFields, "N", 24);
	}
}
?>

Первый аргумент в методе CEvent::Send — «тип почтового события», последний id почтового шаблона.

   Такой способ отправки сообщения даёт нам возможность редактирования письма и подключения html версии.
Остались  вопросы? http://dap-it.ru

Как редактировать форму обратной связи на битрикс?(Добавление полей в форме обратной связи на битриксе).

Как редактировать форму обратной связи на битрикс?(Добавление полей в форме обратной связи на битриксе)

Часто приходится использовать форму обратной связи в редакии «Старт». Можно сделать свою без всяких компонентов, а просто кодом, но иногда достаточно использовать стандартную форму обратной связи, добавив или изменив нужные поля.

Данный материал описывает добавление одного поля в форму из страндартного комлекта Битрикса «Старт».

Сначала нужно создать свое пространство имен, чтобы обновления не затирали наши изменения, нужно стараться это делать обязательно.

1. Создаем в /bitrix/components/ свою папку, например, /dapit/.

2. В вновь созданную папку /dapit/ копируем из папки /bitrix/components/bitrix/ папку /main.feedback/.

3. Далее создаем папку /dapit/ для шаблонов с новым пространством имен в /bitrix/templates/ваш_шаблон/components/.

4. Создаем в ней папку шаблона /main.feedback/ и копируем в нее все файлы отсюда /components/dapit/main.feedback/templates/.default.

5. Правим файл template.php уже из папки /components/dapit/main.feedback/templates/main.feedback/, добавляя в него одно поле, например, «Удобное время для звонка». За основу берем поле «Имя».

На его основе создаем еще одно, прописываме новые значения и вставляем где нужно, наприме сразу по полем имя и у нас получтся следующее:

……Выше код мы не трогали……

<div>
<div>
<?=GetMessage(«MFT_NAME»)?><?if(empty($arParams[«REQUIRED_FIELDS»]) || in_array(«NAME», $arParams[«REQUIRED_FIELDS»])):?><span>*</span><?endif?>
</div>
<input type=»text» name=»user_name» value=»<?=$arResult[«AUTHOR_NAME»]?>»>
</div>

<div>
<div>
<?=GetMessage(«MFT_TIME»)?><?if(empty($arParams[«REQUIRED_FIELDS»]) || in_array(«TIME», $arParams[«REQUIRED_FIELDS»])):?><span>*</span><?endif?>
</div>
<input type=»text» name=»time» value=»<?=$arResult[«TIME»]?>»>
</div>

……Ниже код мы не трогали……

6. Изменяем файл /bitrix/templates/ваш_шаблог/components/dapit/main.feedback/forma/lang/ru/template.php добавили одну строку с MFT_TIME

<?
$MESS [‘MFT_NAME’] = «Ваше имя»;
$MESS [‘MFT_TIME’] = «Удобное время для звонка»;
$MESS [‘MFT_EMAIL’] = «Ваш E-mail»;
$MESS [‘MFT_MESSAGE’] = «Сообщение»;
$MESS [‘MFT_CAPTCHA’] = «Защита от автоматических сообщений»;
$MESS [‘MFT_CAPTCHA_CODE’] = «Введите слово на картинке»;
$MESS [‘MFT_SUBMIT’] = «Отправить»;
?>

Шаблон готов.

7. Теперь самое сложное, это оставшаяся кастомизация компонента в /bitrix/components/dapit/main.feedback/component.php. Тут я приведу сразу готовый код измененного стандатного файла. Везде где есть слово time или TIME, это то, что добавилось в нем.

<?
if(!defined(«B_PROLOG_INCLUDED»)||B_PROLOG_INCLUDED!==true)die();
$arParams[«USE_CAPTCHA»] = (($arParams[«USE_CAPTCHA»] != «N» && !$USER->IsAuthorized()) ? «Y» : «N»);
$arParams[«EVENT_NAME»] = trim($arParams[«EVENT_NAME»]);
if(strlen($arParams[«EVENT_NAME»]) <= 0)
$arParams[«EVENT_NAME»] = «FEEDBACK_FORM»;
$arParams[«EMAIL_TO»] = trim($arParams[«EMAIL_TO»]);
if(strlen($arParams[«EMAIL_TO»]) <= 0)
$arParams[«EMAIL_TO»] = COption::GetOptionString(«main», «email_from»);

$arParams[«EVENT_TIME»] = trim($arParams[«EVENT_TIME»]);

if(strlen($arParams[«EVENT_TIME»]) <= 0)

$arParams[«EVENT_TIME»] = «FEEDBACK_FORM»;
$arParams[«OK_TEXT»] = trim($arParams[«OK_TEXT»]);
if(strlen($arParams[«OK_TEXT»]) <= 0)
$arParams[«OK_TEXT»] = GetMessage(«MF_OK_MESSAGE»);
if($_SERVER[«REQUEST_METHOD»] == «POST» && strlen($_POST[«submit»]) > 0)
{
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(«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»);
}
if(strlen($_POST[«user_email»]) > 1 && !check_email($_POST[«user_email»]))
$arResult[«ERROR_MESSAGE»][] = GetMessage(«MF_EMAIL_NOT_VALID»);
if($arParams[«USE_CAPTCHA»] == «Y»)
{
include_once($_SERVER[«DOCUMENT_ROOT»].»/bitrix/modules/main/classes/general/captcha.php»);
$captcha_code = $_POST[«captcha_sid»];
$captcha_word = $_POST[«captcha_word»];
$cpt = new CCaptcha();
$captchaPass = COption::GetOptionString(«main», «captcha_password», «»);
if (strlen($captcha_word) > 0 && strlen($captcha_code) > 0)
{
if (!$cpt->CheckCodeCrypt($captcha_word, $captcha_code, $captchaPass))
$arResult[«ERROR_MESSAGE»][] = GetMessage(«MF_CAPTCHA_WRONG»);
}
else
$arResult[«ERROR_MESSAGE»][] = GetMessage(«MF_CAPTHCA_EMPTY»);
}
if(empty($arResult))
{
$arFields = Array(
«AUTHOR» => $_POST[«user_name»],
«AUTHOR_EMAIL» => $_POST[«user_email»],
«TIME» => $_POST[«time»],
«EMAIL_TO» => $arParams[«EMAIL_TO»],
«TEXT» => $_POST[«MESSAGE»],
);
if(!empty($arParams[«EVENT_MESSAGE_ID»]))
{
foreach($arParams[«EVENT_MESSAGE_ID»] as $v)
if(IntVal($v) > 0)
CEvent::Send($arParams[«EVENT_NAME»], SITE_ID, $arFields, «N», IntVal($v));
}
else
CEvent::Send($arParams[«EVENT_NAME»], SITE_ID, $arFields);
$_SESSION[«MF_NAME»] = htmlspecialcharsEx($_POST[«user_name»]);
$_SESSION[«MF_EMAIL»] = htmlspecialcharsEx($_POST[«user_email»]);
$_SESSION[«MF_TIME»] = htmlspecialcharsEx($_POST[«time»]);
LocalRedirect($APPLICATION->GetCurPageParam(«success=Y», Array(«success»)));
}
$arResult[«MESSAGE»] = htmlspecialcharsEx($_POST[«MESSAGE»]);
$arResult[«AUTHOR_NAME»] = htmlspecialcharsEx($_POST[«user_name»]);
$arResult[«AUTHOR_EMAIL»] = htmlspecialcharsEx($_POST[«user_email»]);
$arResult[«TIME»] = htmlspecialcharsEx($_POST[«time»]);
}
else
$arResult[«ERROR_MESSAGE»][] = GetMessage(«MF_SESS_EXP»);
}
elseif($_REQUEST[«success»] == «Y»)
{
$arResult[«OK_MESSAGE»] = $arParams[«OK_TEXT»];
}
if(empty($arResult[«ERROR_MESSAGE»]))
{
if($USER->IsAuthorized())
{
$arResult[«AUTHOR_NAME»] = htmlspecialcharsEx($USER->GetFullName());
$arResult[«AUTHOR_EMAIL»] = htmlspecialcharsEx($USER->GetEmail());
$arResult[«TIME»] = htmlspecialcharsEx($USER->GetEmail());
}
else
{
if(strlen($_SESSION[«MF_NAME»]) > 0)
$arResult[«AUTHOR_NAME»] = htmlspecialcharsEx($_SESSION[«MF_NAME»]);
if(strlen($_SESSION[«MF_EMAIL»]) > 0)
$arResult[«AUTHOR_EMAIL»] = htmlspecialcharsEx($_SESSION[«MF_EMAIL»]);
if(strlen($_SESSION[«MF_TIME»]) > 0)

$arResult[«TIME»] = htmlspecialcharsEx($_SESSION[«MF_TIME»]);
}
}
if($arParams[«USE_CAPTCHA»] == «Y»)
$arResult[«capCode»] = htmlspecialchars($APPLICATION->CaptchaGetCode());
$this->IncludeComponentTemplate();
?>

8. Изменяем языковой файл /bitrix/components/dapit/main.feedback/lang/ru/.parameters.php, опять же добавили лишь одну строку с TIME.

<?
$MESS [‘MFP_CAPTCHA’] = «Использовать защиту от автоматических сообщений (CAPTCHA) для неавторизованных пользователей»;
$MESS [‘MFP_OK_MESSAGE’] = «Сообщение, выводимое пользователю после отправки»;
$MESS [‘MFP_OK_TEXT’] = «Спасибо, ваше сообщение принято.»;
$MESS [‘MFP_EMAIL_TO’] = «E-mail, на который будет отправлено письмо»;
$MESS [‘MFP_REQUIRED_FIELDS’] = «Обязательные поля для заполнения»;
$MESS [‘MFP_ALL_REQ’] = «(все необязательные)»;
$MESS [‘MFP_NAME’] = «Имя»;
$MESS [‘MFP_TIME’] = «Удобное время для звонка»;
$MESS [‘MFP_MESSAGE’] = «Сообщение»;
$MESS [‘MFP_EMAIL_TEMPLATES’] = «Почтовые шаблоны для отправки письма»;
?>

9. Напоследок заходим в Административной части Настройки —> Настройки продукта —> Почтовые события —> Почтовые шаблоны в «Отправка сообщения через форму обратной связи» и вставляем там наше поле TIME:

Информационное сообщение сайта #SITE_NAME#
——————————————

Вам было отправлено сообщение через форму обратной связи

Автор: #AUTHOR#
E-mail автора: #AUTHOR_EMAIL#
Удобное время для звонка: #TIME#

Текст сообщения:
#TEXT#

Сообщение сгенерировано автоматически.

Если я ничего не упустил, то теперь все должно получиться и работать.

Битрикс – Закрытие публичной части сайта. (Выключить сайт на Битрикс).

В Битрикс, как и в практически любой другой системе управления сайтом, есть функция закрытия сайта от посторонних глаз на время его разработки либо модификации. В этой статье я расскажу как включить эту функцию и как модифицировать страницу, которая будет выдаваться пользователям, для которых сайт будет являться закрытым. Собственно, полное закрытие сайта в 1С-Битрикс от всех пользователей с уровнем доступа меньше, чем администратор реализовано очень просто – нужно зайти в настройки – Настройки модулей – Настройки главного модуля и внизу основной вкладки есть кнопка Закрыть доступ для посетителей. Если ее нажать, то сайт будет закрыт и будет показана стандартная страница закрытого сайта для всех, кроме администраторов.

Если в вашем проекте предполагается страница закрытого сайта со своим дизайном, то для это нужно создать страницу /bitrix/php_interface/include/site_closed.php с контентом для страницы закрытого сайта.