Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
Поставили компонент "Настраиваемая регистрация", настроили все как положено, по инструкции.
Проходит несколько дней и замечаем, что 70% юзеров регистрируются не указывая при этом дополнительной информации, при всем при том, что часть дополнительных полей являются обязательными для заполнения, и часть пользователей зарегистрированы по несколько раз под разными логинами и разными мылами. Начали отслеживать пути таких юзеров и выяснилось, что:
1. Если юзер со страниц Восстановления или Смены пароля перейдет по ссылке авторизация, то попадет он не на страницу с "Настраиваемой регистрацией", а на системную форму регистрации со стандартным набором полей и мы получим зарегистрированного пользователя без необходимых нам дополнительных данных.
2. Если в форме авторизации указать в качестве страницы регистрации файл с компонентом настраиваемой регистрации, то из формы авторизации ссылки на восстановление и смену пароля ведут на страницу с Настраиваемой регистрацией, где нет ни смены ни запроса пароля, в результате наши юзеры начинают регистрироваться второй, третий раз и т.д., а потом и вовсе звонить со словами: "Почему мы каждый раз должны регистрироваться на Вашем сайте, у нас скоро email-адреса кончатся" (на проекте включена проверка на уникальность мыл).
По разному перепробовали решить проблему, во всех случаях находилась ссылка на системную форму регистрации.
После кастомизации всех компонент (system.auth.forgotpasswd, system.auth.changepasswd, main.register и system.auth.form) проблема была решена. Но!!!
1. Клиент, которому обещается что он самостоятельно сможет воспользоваться любым компонентом этого не умеет!
2. Разработчик тратит в разы больше времени, чем ожидается сначала.
3. Выходит, что имеющийся компонент становится бесполезным, так как его + еще три компонента приходится кастомизировать.
Ниже привожу код страницы, решающий найденные проблемы. Этот код мы разместили в файле auth.php ("системный" файл в корне сайта из демонстрационного комплекта).
Обращаю внимание отдела разработки компании 1С-Битрикс - использовались только ДЕФОЛТНЫЕ компоненты!!! Используя приведенный ниже код можно доработать "Программируемую" регистрацию до действительно "Настраиваемой", и тогда не придется производить никаких лишних копирований и кастомизаций описанных в документации в качестве комментариев от Роберта Басырова.
Собственно сам код страницы готовый для вставки в auth.php:
ЗЫ: Надеюсь настанет день, когда это будет доделано, и к доработкам перетаскиваемым из проекта в проект не придется добавлять еще и эту элементарщину, которую, если по хорошему, надо делать комплексным компонентом с поддержкой Ajax.
Назад в раздел
то ждем ваше обращение в нашей службе тех поддержки.
Настраиваемая регистрация - доработка
На одном из проектов возникал необходимость собирать при регистрации дополнительную инфу (компания, телефон и т.д.).Поставили компонент "Настраиваемая регистрация", настроили все как положено, по инструкции.
Проходит несколько дней и замечаем, что 70% юзеров регистрируются не указывая при этом дополнительной информации, при всем при том, что часть дополнительных полей являются обязательными для заполнения, и часть пользователей зарегистрированы по несколько раз под разными логинами и разными мылами. Начали отслеживать пути таких юзеров и выяснилось, что:
1. Если юзер со страниц Восстановления или Смены пароля перейдет по ссылке авторизация, то попадет он не на страницу с "Настраиваемой регистрацией", а на системную форму регистрации со стандартным набором полей и мы получим зарегистрированного пользователя без необходимых нам дополнительных данных.
2. Если в форме авторизации указать в качестве страницы регистрации файл с компонентом настраиваемой регистрации, то из формы авторизации ссылки на восстановление и смену пароля ведут на страницу с Настраиваемой регистрацией, где нет ни смены ни запроса пароля, в результате наши юзеры начинают регистрироваться второй, третий раз и т.д., а потом и вовсе звонить со словами: "Почему мы каждый раз должны регистрироваться на Вашем сайте, у нас скоро email-адреса кончатся" (на проекте включена проверка на уникальность мыл).
По разному перепробовали решить проблему, во всех случаях находилась ссылка на системную форму регистрации.
После кастомизации всех компонент (system.auth.forgotpasswd, system.auth.changepasswd, main.register и system.auth.form) проблема была решена. Но!!!
1. Клиент, которому обещается что он самостоятельно сможет воспользоваться любым компонентом этого не умеет!
2. Разработчик тратит в разы больше времени, чем ожидается сначала.
3. Выходит, что имеющийся компонент становится бесполезным, так как его + еще три компонента приходится кастомизировать.
Ниже привожу код страницы, решающий найденные проблемы. Этот код мы разместили в файле auth.php ("системный" файл в корне сайта из демонстрационного комплекта).
Обращаю внимание отдела разработки компании 1С-Битрикс - использовались только ДЕФОЛТНЫЕ компоненты!!! Используя приведенный ниже код можно доработать "Программируемую" регистрацию до действительно "Настраиваемой", и тогда не придется производить никаких лишних копирований и кастомизаций описанных в документации в качестве комментариев от Роберта Басырова.
Собственно сам код страницы готовый для вставки в auth.php:
<? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); if($_GET['forgot_password']=='yes'): $APPLICATION->SetTitle("Запрос пароля на восстановление"); elseif($_GET['change_password']=='yes'): $APPLICATION->SetTitle("Востановление пароля"); elseif($_GET['register']=='yes'): $APPLICATION->SetTitle("Регистрация"); else: $APPLICATION->SetTitle("Авторизация"); endif; global $USER; if ($USER->IsAuthorized()) { if (isset($_REQUEST["backurl"]) && strlen($_REQUEST["backurl"])>0) LocalRedirect($backurl); } ?> <?global $USER; if ($USER->IsAuthorized()) {?> <p>Вы зарегистрированы и успешно авторизовались.</p> <p><a href="<?=SITE_DIR?>" href="">Вернуться на главную страницу</a></p> <?}?> <?global $USER; if (!$USER->IsAuthorized()) {?> <?if($_GET['forgot_password']=='yes'):?> <?$APPLICATION->IncludeComponent( "bitrix:system.auth.forgotpasswd","",false );?> <?elseif($_GET['change_password']=='yes'):?> <?$APPLICATION->IncludeComponent( "bitrix:system.auth.changepasswd","",false );?> <?elseif($_GET['register']=='yes'):?> <?$APPLICATION->IncludeComponent( "bitrix:main.register", "", Array( "USER_PROPERTY_NAME" => "", "SEF_MODE" => "N", "SHOW_FIELDS" => Array("NAME", "SECOND_NAME", "LAST_NAME", "PERSONAL_MOBILE", "PERSONAL_CITY", "WORK_COMPANY", "WORK_POSITION", "WORK_WWW", "WORK_PHONE", "WORK_FAX", "WORK_PROFILE", "WORK_LOGO"), "REQUIRED_FIELDS" => Array("NAME", "SECOND_NAME", "LAST_NAME", "PERSONAL_MOBILE", "PERSONAL_CITY"), "AUTH" => "Y", "USE_BACKURL" => "Y", "SUCCESS_PAGE" => "", "SET_TITLE" => "Y", "USER_PROPERTY" => Array("UF_AGENT") ) );?> <?else:?> <?$APPLICATION->IncludeComponent( "bitrix:system.auth.form", "", Array( "REGISTER_URL" => SITE_DIR."auth.php", "PROFILE_URL" => SITE_DIR."club/", "SHOW_ERRORS" => "Y" ) );?> <?endif?> <?}?> <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?> |
ЗЫ: Надеюсь настанет день, когда это будет доделано, и к доработкам перетаскиваемым из проекта в проект не придется добавлять еще и эту элементарщину, которую, если по хорошему, надо делать комплексным компонентом с поддержкой Ajax.
Назад в раздел
Подписаться на новые материалы раздела: