Добавление страницы авторизации в битрикс
Не всех устраивает авторизация пользователей через всплывающую форму, и требуется полноценная страница для входа на CMS Битрикс.
Для начала нужно включить возможность регистрации пользователей на сайте:
Настройки модулей – главный модуль – авторизация – Позволять ли пользователям регистрироваться самостоятельно
Потом нужно создать страницу, например,
/auth/index.php
, для точки входа:
На этом мы уже получаем страницу с запросом логина и пароля, а также ссылками на страницы регистрации, восстановления и смены пароля.
Вся “магия” в define(“NEED_AUTH”, true);
Остается настроить внешний вид.
Для этого копируем шаблоны:
bitrix/components/bitrix/system.auth.registration/templates/.default
в
local/templates/.default/components/bitrix/system.auth.registration/.default
bitrix/components/bitrix/system.auth.authorize/templates/.default
в
local/templates/.default/components/bitrix/system.auth.authorize/.default
bitrix/components/bitrix/system.auth.forgotpasswd/templates/.default
в
local/templates/.default/components/bitrix/system.auth.forgotpasswd/.default
bitrix/components/bitrix/system.auth.changepasswd/templates/.default
в
local/templates/.default/components/bitrix/system.auth.changepasswd/.default
Остаться только сверстать внешний вид под требования дизайна.
Прикладываю мой вариант оформления, на его основе проще начать верстку.
Собственная форма авторизации/регистрации везде (включая переход по ссылкам из настройки профайла) – багбд
Я только хотел уточнить, все ли я верно понял и подвести итог.
Суть проблемы заключается в том, что если используется компонент bitrix:main.profile и пользователь попал на страницу не будучи авторизованным, то ссылки на регистрацию и авторизацию, которые ему предложат, будут выводить авторизацию и регистрацию по системным шаблонам, т.е. обязательные при регистрации поля не будут заполнены.
Решение делится на 2 части:
1. Копируем шаблон (папка .default) из /bitrix/components/bitrix/system.auth.registration/templates в
/bitrix/templates/.default/components/bitrix/system.auth.registration/
И модифицируем код шаблона – он теперь будет содержать код, вызывающий именно наш нужный для этого нелегкого дела компонент (а так же поправляем в самом конце url ссылки):
Код |
---|
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); ShowMessage($arParams["~AUTH_RESULT"]); $APPLICATION->IncludeComponent("bitrix:main.register", "reg_1", array( "SHOW_FIELDS" => array( 0 => "NAME", 1 => "SECOND_NAME", 2 => "PERSONAL_PROFESSION", 3 => "PERSONAL_PHOTO", 4 => "PERSONAL_PHONE", 5 => "PERSONAL_CITY", 6 => "PERSONAL_STATE", ), "REQUIRED_FIELDS" => array( 0 => "NAME", 1 => "SECOND_NAME", 2 => "PERSONAL_PHONE", ), "AUTH" => "Y", "USE_BACKURL" => "Y", "SUCCESS_PAGE" => "/auth/personal.php?reg_ok", "SET_TITLE" => "Y", "USER_PROPERTY" => array( ), "USER_PROPERTY_NAME" => "" ), false ); ?> <p> <a href="/auth/" rel="nofollow"><b><?=GetMessage("AUTH_AUTH")?></b></a> </p> |
2. Аналогичным образом изменяем форму регистрации:
Из /bitrix/components/bitrix/system.auth.authorize/templates папка .default качует в /bitrix/templates/.default/components/bitrix/system.auth.authorize/
В ней также вызывается наш компонент, заточенный под наши нужды:
Код |
---|
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); ?> <? ShowMessage($arParams["~AUTH_RESULT"]); ShowMessage($arResult['ERROR_MESSAGE']); $APPLICATION->IncludeComponent("bitrix:system.auth.form", "aut_deftempl", array( "REGISTER_URL" => "/auth/register.php", "FORGOT_PASSWORD_URL" => "/auth/profile.php", "PROFILE_URL" => "/auth/profile.php", "SHOW_ERRORS" => "Y" ), false ); ?> |
Теперь страницы с define(“NEED_AUTH”, true); выводят именно нашу форму регистрации и авторизации.
Нет ли в решении подводных камней или неучтенных моментов? Или решение верное?
Просто приведенные решения в некоторых постах на форуме пугают 🙂