Как поменять шаблон авторизации и регистрации? / Общие сведения / Битрикс / Технический блог веб-разработчика

Добавление страницы авторизации в битрикс

Не всех устраивает авторизация пользователей через всплывающую форму, и требуется полноценная страница для входа на CMS Битрикс.

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

Настройки модулейглавный модульавторизацияПозволять ли пользователям регистрироваться самостоятельно

pic1

Потом нужно создать страницу, например,

/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); выводят именно нашу форму регистрации и авторизации.

Нет ли в решении подводных камней или неучтенных моментов? Или решение верное?
Просто приведенные решения в некоторых постах на форуме пугают 🙂

Похожее:  Киевстар ММС — отправка и приём мультимедийных сообщений

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *