https://dev.1c-bitrix.ru/community/webdev/user/17138/blog/1651/
1. Перенесём компонент bitrix:main.register в своё пространство имён
Сразу уточню, что для решения этой задачи эффективнее всего именно изменение кода компонента. Обусловлено это тем, что он имеет очень много проверок и условий, обходить которые себе дороже будет, при внесении изменений в шаблон. Плюс мы получаем доступ к порядку вывода полей формы регистрации.
2. Открываем на редактирование файл /bitrix/components/demo/main.register/component.php (путь зависит от пространства имён, в котором находятся пользовательские компоненты).
3. Меняем строки:
на:
4. Далее мы должны для системы создавать логин из e-mail'а. Для этого надо в файл /bitrix/php_interface/init.php (если его нет, то создайте) добавить код:
В результате у нас получился такой компонент
и пользователи после регистрации выглядят
Теперь поправим нашу форму авторизации (bitrix:system.auth.form) на сайте, чтобы вместо логина запрашивался e-mail.
1. Кастомизируем шаблон компонента
2. Отредактируем языковой файл /bitrix/templates/.default/components/bitrix/system.auth.form/email/lang/ru/template.php
и заменим строку:
на
или
Теперь пользователь сайта увидит что-то подобное:
1. Перенесём компонент bitrix:main.register в своё пространство имён
Сразу уточню, что для решения этой задачи эффективнее всего именно изменение кода компонента. Обусловлено это тем, что он имеет очень много проверок и условий, обходить которые себе дороже будет, при внесении изменений в шаблон. Плюс мы получаем доступ к порядку вывода полей формы регистрации.
2. Открываем на редактирование файл /bitrix/components/demo/main.register/component.php (путь зависит от пространства имён, в котором находятся пользовательские компоненты).
3. Меняем строки:
$arDefaultFields = array( "LOGIN", "PASSWORD", "CONFIRM_PASSWORD", EMAIL", ); |
на:
$arDefaultFields = array( "EMAIL", "PASSWORD", "CONFIRM_PASSWORD", ); |
4. Далее мы должны для системы создавать логин из e-mail'а. Для этого надо в файл /bitrix/php_interface/init.php (если его нет, то создайте) добавить код:
AddEventHandler("main", "OnBeforeUserRegister", "OnBeforeUserUpdateHandler"); AddEventHandler("main", "OnBeforeUserUpdate", "OnBeforeUserUpdateHandler"); function OnBeforeUserUpdateHandler(&$arFields) { $arFields["LOGIN"] = $arFields["EMAIL"]; return $arFields; } |
В результате у нас получился такой компонент
и пользователи после регистрации выглядят
Теперь поправим нашу форму авторизации (bitrix:system.auth.form) на сайте, чтобы вместо логина запрашивался e-mail.
1. Кастомизируем шаблон компонента
2. Отредактируем языковой файл /bitrix/templates/.default/components/bitrix/system.auth.form/email/lang/ru/template.php
и заменим строку:
$MESS ['AUTH_LOGIN'] = "Логин"; |
$MESS ['AUTH_LOGIN'] = "E-mail"; |
$MESS ['AUTH_LOGIN'] = "Логин или e-mail"; |
Комментариев нет :
Отправить комментарий