E-mail вместо логина при регистрации и оформлении заказа в 1C-Битрикс

Просмотров: 5227

Задача: при регистрации нового пользователя и оформлении заказа нужно убрать поле Логин и использовать электронную почту вместо него. При этом без захламления init.php и без создания собсвенных компонентов.

E-mail вместо логина при регистрации и оформлении заказа в 1C-Битрикс

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

Копирование значения поля EMAIL в поле LOGIN при помощи JavaScript

Для начала, скопируем значение поля EMAIL и вставим его в поле LOGIN при помощи JavaScript. Для этого нужно внести изменения в шаблон компонента "main.register".

Пример кода для шаблона компонента "main.register":

<? if ($FIELD == 'EMAIL') { ?>
  <input class="form-control" size="30" type="email" name="REGISTER[<?= $FIELD ?>]"
     onkeyup="document.getElementById('login-field').value = this.value"
     value="<?= $arResult["VALUES"][$FIELD] ?>"/>
<? } elseif ($FIELD == 'LOGIN') { // Скрываем поле LOGIN ?>
  <input id="login-field" size="30" type="hidden" name="REGISTER[<?= $FIELD ?>]"
     value="<?= $arResult["VALUES"][$FIELD] ?>"/>
<? } else { ?>
  <input class="form-control" size="30" type="text" name="REGISTER[<?= $FIELD ?>]"
     value="<?= $arResult["VALUES"][$FIELD] ?>"/>
<? } ?>

В данном примере, при вводе значения в поле EMAIL, оно будет автоматически копироваться в поле LOGIN с помощью атрибута onkeyup="document.getElementById('login-field').value = this.value". Обратите внимание, что поле LOGIN имеет идентификатор login-field, который используется в JavaScript для получения доступа к полю и установки его значения.

Также прячем название самого поля "Логин", тамже в шаблоне "main.register". Этот код будет отображать название поля только для полей, которые не являются полем "LOGIN":

<? if ($FIELD !== 'LOGIN') { ?>
  <label>
   <?= GetMessage("REGISTER_FIELD_" . $FIELD) ?>:
   <? if ($arResult["REQUIRED_FIELDS_FLAGS"][$FIELD] == "Y"): ?>
      <span>*</span>
   <? endif ?>
  </label>
<? } ?>

Чтобы не путать пользователей, также необходимо изменить название поля "Логин" на "E-mail" в компонентах авторизации и восстановления пароля. Для этого необходимо найти соответствующие шаблоны system.auth.form и system.auth.forgotpasswd и заменить название поля "Логин" на "E-mail".

Создание логина из полного адреса электронной почты при оформлении заказа

При оформлении заказа, когда пользователь еще не зарегистрирован и делает первый заказ, автоматически происходит регистрация и создается логин на основе указанного адреса электронной почты. По умолчанию, логин будет содержать только часть адреса до символа "@".

Для создания логина из полного адреса электронной почты нужно внести изменения в файл confirm.php шаблона оформления заказа. Вставьте следующий код:

if (!empty($arResult["ORDER"])) {
    $USER_UPD = new CUser;
    $rsUser = CUser::GetByID($arResult["ORDER"]['USER_ID']);
    $arUser = $rsUser->Fetch();
    $fields = array(
        "EMAIL" => $arUser['EMAIL'],
        "LOGIN" => $arUser['EMAIL']
    );
    $USER_UPD->Update($arResult["ORDER"]['USER_ID'], $fields);
    // Здесь вся остальная логика confirm.php
}

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

Пример использования в видеоуроке:
Авторизация, регистрация и восстановление пароля

После внесения всех этих изменений, регистрация и оформление заказа на сайте с использованием адреса электронной почты в качестве логина должны работать как ожидается, без необходимости создания собственных компонентов или изменения init.php.

Стоимость разработки на 1С-Битрикс:

Индивидуальная разработка магазина

от 500 000 руб. от 5-ти недель

Разработка магазина на 1С-Битрикс с нуля. Дизайн, сборка и оптимизация производительности под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Запуск сайта на готовом решении

от 100 000 руб. от 7-ми дней

Вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Магазин, быстро запускается на базе одного из 200-та готовых решений.

Мобильное приложение

от 500 000 руб. от 1-го месяца

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Сайт компании

от 350 000 руб. от 1-го месяца

Корпоративный сайт с информационными разделами, каталогом товаров или услуг. Включает формы обратной связи карточек каталога, любое количество статичных и динамичных разделов.

Инфресурс

от 400 000 руб. от 5-ти недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

Лечение сайтов от вирусов

от 40 000 руб. от 2-х дней

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