Всем привет. Знаю, что тема заезжена, просто огромное количество постов и предлагаются разные по сложности решения.
Я только хотел уточнить, все ли я верно понял и подвести итог.
Суть проблемы заключается в том, что если используется компонент 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); выводят именно нашу форму регистрации и авторизации.
Нет ли в решении подводных камней или неучтенных моментов? Или решение верное?
Просто приведенные решения в некоторых постах на форуме пугают
Не бойтесь делать того что не умеете. Ковчег построил любитель...Профессионалы построили Титаник