Всем привет. Знаю, что тема заезжена, просто огромное количество постов и предлагаются разные по сложности решения.
Я только хотел уточнить, все ли я верно понял и подвести итог.
Суть проблемы заключается в том, что если используется компонент bitrix:main.profile и пользователь попал на страницу не будучи авторизованным, то ссылки на регистрацию и авторизацию, которые ему предложат, будут выводить авторизацию и регистрацию по системным шаблонам, т.е. обязательные при регистрации поля не будут заполнены.
Решение делится на 2 части:
1. Копируем шаблон (папка .default) из /bitrix/components/bitrix/system.auth.registration/templates в
/bitrix/templates/.default/components/bitrix/system.auth.registration/
И модифицируем код шаблона - он теперь будет содержать код, вызывающий именно наш нужный для этого нелегкого дела компонент (а так же поправляем в самом конце url ссылки):
2. Аналогичным образом изменяем форму регистрации:
Из /bitrix/components/bitrix/system.auth.authorize/templates папка .default качует в /bitrix/templates/.default/components/bitrix/system.auth.authorize/
В ней также вызывается наш компонент, заточенный под наши нужды:
Теперь страницы с define("NEED_AUTH", true); выводят именно нашу форму регистрации и авторизации.
Нет ли в решении подводных камней или неучтенных моментов? Или решение верное?
Просто приведенные решения в некоторых постах на форуме пугают
Я только хотел уточнить, все ли я верно понял и подвести итог.
Суть проблемы заключается в том, что если используется компонент 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); выводят именно нашу форму регистрации и авторизации.
Нет ли в решении подводных камней или неучтенных моментов? Или решение верное?
Просто приведенные решения в некоторых постах на форуме пугают

Не бойтесь делать того что не умеете. Ковчег построил любитель...Профессионалы построили Титаник