Битрикс. Регистрация и авторизация. Часть 3 из 3

22.07.2018

Теги: CMSWeb-разработкаАвторизацияБитриксКомпонентРегистрацияФормаШаблонКомпонентаШаблонСайта

Компонент «Профиль пользователя» позволяет вывести в публичную часть сайта информацию о пользователе. Некоторые поля пользователь может отредактировать. В визуальном редакторе компонент расположен по пути: «Служебные • Пользователь • Параметры пользователя».

Пример вызова компонента bitrix:main.profile:

$APPLICATION->IncludeComponent(
    "bitrix:main.profile",
    "",
    array(
        "USER_PROPERTY_NAME" => "",
        "SET_TITLE" => "Y",
        "AJAX_MODE" => "N",
        "USER_PROPERTY" => array(),
        "SEND_INFO" => "Y",
        "CHECK_RIGHTS" => "Y",
        "AJAX_OPTION_JUMP" => "N",
        "AJAX_OPTION_STYLE" => "Y",
        "AJAX_OPTION_HISTORY" => "N"
    )
);

Давайте создадим страницу /auth/profile.php и разместим на ней вызов компонента «Профиль пользователя»:

<?php
/*
 * Файл /auth/profile.php
 */
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Профиль пользователя");
?>

<?php
$APPLICATION->IncludeComponent(
    "bitrix:main.profile",
    "",
    array(
        "CHECK_RIGHTS" => "N",      // Проверять права доступа
        "SEND_INFO" => "N",         // Генерировать почтовое событие
        "SET_TITLE" => "N",         // Устанавливать заголовок страницы
        "USER_PROPERTY" => "",      // Показывать доп. свойства
        "USER_PROPERTY_NAME" => "", // Название закладки с доп. свойствами
    ),
    false
);
?>

<?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php"); ?>

Страница /auth/profile.php теперь выглядит так:

Скопируем шаблон компонента:

  • откуда: bitrix/components/bitrix/main.profile/templates/.default
  • куда: local/templates/.default/components/bitrix/main.profile/.default

После разгребания табличной верстки от разработчиков Битрикс, получился такой шаблон:

<?php
/*
 * Файл local/templates/.default/components/bitrix/main.profile/.default/template.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
?>

<div class="bitrix-main-profile">

<h2><?= GetMessage('MAIN_PROFILE_FORM_TITLE'); /* Заголовок формы */ ?></h2>

<?php ShowError($arResult["strProfileError"]); /* сообщения об ошибках */ ?>

<?php
if ($arResult['DATA_SAVED'] == 'Y') { // сообщение об успешном сохранении данных
    ShowNote(GetMessage('PROFILE_DATA_SAVED'));
}
?>

<form method="post" name="form1" action="<?= $arResult["FORM_TARGET"]; ?>" enctype="multipart/form-data">

    <?= $arResult["BX_SESSION_CHECK"]; ?>
    <input type="hidden" name="lang" value="<?= LANG; ?>" />
    <input type="hidden" name="ID" value=<?= $arResult["ID"]; ?> />

    <section>
        <h3><?= GetMessage('MAIN_PROFILE_REGISTER_TITLE'); /* Регистрационные данные */ ?></h3>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_REG_TITLE'); /* обращение */ ?></span>
            <span>
                <input type="text" name="TITLE" value="<?= $arResult["arUser"]["TITLE"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_REG_FNAME'); /* имя */ ?></span>
            <span>
                <input type="text" name="NAME" maxlength="50"
                       value="<?= $arResult["arUser"]["NAME"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_REG_LNAME'); /* фамилия */ ?></span>
            <span>
                <input type="text" name="LAST_NAME" maxlength="50"
                       value="<?= $arResult["arUser"]["LAST_NAME"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_REG_SNAME'); /* отчество */ ?></span>
            <span>
                <input type="text" name="SECOND_NAME" maxlength="50"
                       value="<?= $arResult["arUser"]["SECOND_NAME"];?>" />
            </span>
        </div>
        <div>
            <span>
                <?= GetMessage('MAIN_PROFILE_REG_EMAIL'); /* e-mail */ ?>
                <?php if ($arResult["EMAIL_REQUIRED"]): ?>
                    <i>*</i> <!-- поле обязательно для заполнения -->
                <?php endif; ?>
            </span>
            <span>
                <input type="text" name="EMAIL" maxlength="50"
                       value="<?= $arResult["arUser"]["EMAIL"]?>" />
            </span>
        </div>
        <div>
            <span>
                <?= GetMessage('MAIN_PROFILE_REG_LOGIN'); /* логин */ ?>
                <i>*</i> <!-- поле обязательно для заполнения -->
            </span>
            <span>
                <input type="text" name="LOGIN" maxlength="50"
                       value="<?= $arResult["arUser"]["LOGIN"]?>" />
            </span>
        </div>
        <?php if ($arResult["arUser"]["EXTERNAL_AUTH_ID"] == ''): /* авторизация не через внешние сервисы */ ?>
            <div>
                <span><?= GetMessage('MAIN_PROFILE_REG_PASSWORD'); /* новый пароль */ ?></span>
                <span>
                    <input type="password" name="NEW_PASSWORD" maxlength="50"
                           value="" autocomplete="off" />
                </span>
                <?php if ($arResult["SECURE_AUTH"]): /* безопасная авторизация */ ?>
                    <!-- код удален -->
                <?php endif; ?>
            </div>
            <div>
                <span><?= GetMessage('MAIN_PROFILE_REG_CONFIRM'); /* подтверждение пароля */ ?></span>
                <span>
                    <input type="password" name="NEW_PASSWORD_CONFIRM" maxlength="50"
                           value="" autocomplete="off" />
                </span>
            </div>
        <?php endif; ?>
    </section>

    <section>
        <h3><?= GetMessage('MAIN_PROFILE_PERSONAL_TITLE'); /* Личные данные */ ?></h3>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_PROFESSION'); /* профессия */ ?></span>
            <span>
                <input type="text" name="PERSONAL_PROFESSION" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_PROFESSION"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_WWW'); /* сайт */ ?></span>
            <span>
                <input type="text" name="PERSONAL_WWW" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_WWW"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_ICQ'); /* ICQ */ ?></span>
            <span>
                <input type="text" name="PERSONAL_ICQ" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_ICQ"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_GENDER'); /* пол */ ?></span>
            <span>
                <select name="PERSONAL_GENDER">
                    <option value="">
                        <?= GetMessage('MAIN_PROFILE_DONT_KNOW'); ?>
                    </option>
                    <option value="M"<?=$arResult["arUser"]["PERSONAL_GENDER"]=="M" ? ' selected="selected"':''?>>
                        <?= GetMessage("USER_MALE"); ?>
                    </option>
                    <option value="F"<?=$arResult["arUser"]["PERSONAL_GENDER"]=="F" ? ' selected="selected"':''?>>
                        <?= GetMessage("USER_FEMALE"); ?>
                    </option>
                </select>
            </span>
        </div>
        <div>
            <span>
                <?= GetMessage('MAIN_PROFILE_USER_BIRTHDAY'); /* день рождения */ ?>
                (<?= $arResult["DATE_FORMAT"]; ?>)
            </span>
            <span>
                <?php
                $APPLICATION->IncludeComponent(
                    'bitrix:main.calendar',
                    '',
                    array(
                        'SHOW_INPUT' => 'Y',
                        'FORM_NAME' => 'form1',
                        'INPUT_NAME' => 'PERSONAL_BIRTHDAY',
                        'INPUT_VALUE' => $arResult["arUser"]["PERSONAL_BIRTHDAY"],
                        'SHOW_TIME' => 'N'
                    ),
                    null,
                    array('HIDE_ICONS' => 'Y')
                );
                ?>
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_PHOTO'); /* фотография */ ?></span>
            <span>
                <?= $arResult["arUser"]["PERSONAL_PHOTO_INPUT"]; ?>
                <?php
                if (strlen($arResult["arUser"]["PERSONAL_PHOTO"]) > 0) {
                    echo $arResult["arUser"]["PERSONAL_PHOTO_HTML"];
                }
                ?>
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_PHONE'); /* телефон */ ?></span>
            <span>
                <input type="text" name="PERSONAL_PHONE" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_PHONE"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_FAX'); /* факс */ ?></span>
            <span>
                <input type="text" name="PERSONAL_FAX" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_FAX"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_MOBILE'); /* мобильный */ ?></span>
            <span>
                <input type="text" name="PERSONAL_MOBILE" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_MOBILE"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_PAGER'); /* пейджер */ ?></span>
            <span>
                <input type="text" name="PERSONAL_PAGER" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_PAGER"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_COUNTRY'); /* страна */ ?></span>
            <span><?= $arResult["COUNTRY_SELECT"]; ?></span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_STATE'); /* область */ ?></span>
            <span>
                <input type="text" name="PERSONAL_STATE" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_STATE"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_CITY'); /* город */ ?></span>
            <span>
                <input type="text" name="PERSONAL_CITY" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_CITY"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_ZIP'); /* почтовый индекс */ ?></span>
            <span>
                <input type="text" name="PERSONAL_ZIP" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_ZIP"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_STREET'); /* улица */ ?></span>
            <span>
                <textarea name="PERSONAL_STREET"><?= $arResult["arUser"]["PERSONAL_STREET"]; ?></textarea>
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_MAILBOX'); /* почтовый ящик */ ?></span>
            <span>
                <input type="text" name="PERSONAL_MAILBOX" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_MAILBOX"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_NOTES'); /* дополнительные заметки */ ?></span>
            <span>
                <textarea name="PERSONAL_NOTES"><?=$arResult["arUser"]["PERSONAL_NOTES"]?></textarea>
            </span>
        </div>
    </section>

    <section>
        <h3><?= GetMessage('MAIN_PROFILE_WORK_TITLE'); /* Информация о работе */ ?></h3>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_COMPANY'); /* компания */ ?></span>
            <span>
                <input type="text" name="WORK_COMPANY" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_COMPANY"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_WWW'); /* сайт */ ?></span>
            <span>
                <input type="text" name="WORK_WWW" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_WWW"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_DEPARTMENT'); /* отдел */ ?></span>
            <span>
                <input type="text" name="WORK_DEPARTMENT" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_DEPARTMENT"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_POSITION'); /* должность */ ?></span>
            <span>
                <input type="text" name="WORK_POSITION" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_POSITION"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_PROFILE'); /* направление деятельности */ ?></span>
            <span>
                <textarea name="WORK_PROFILE"><?= $arResult["arUser"]["WORK_PROFILE"]; ?></textarea>
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_LOGO'); /* логотип компании */ ?></span>
            <span>
            <?= $arResult["arUser"]["WORK_LOGO_INPUT"]; ?>
            <?php
            if (strlen($arResult["arUser"]["WORK_LOGO"]) > 0) {
                echo $arResult["arUser"]["WORK_LOGO_HTML"];
            }
            ?>
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_PHONE'); /* телефон */ ?></span>
            <span>
                <input type="text" name="WORK_PHONE" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_PHONE"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_FAX'); /* факс */ ?></span>
            <span>
                <input type="text" name="WORK_FAX" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_FAX"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_PAGER'); /* пейджер */ ?></span>
            <span>
                <input type="text" name="WORK_PAGER" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_PAGER"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_COUNTRY'); /* страна */ ?></span>
            <span><?= $arResult["COUNTRY_SELECT_WORK"]?></span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_STATE'); /* область */ ?></span>
            <span>
                <input type="text" name="WORK_STATE" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_STATE"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_CITY'); /* город */ ?></span>
            <span>
                <input type="text" name="WORK_CITY" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_CITY"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_ZIP'); /* почтовый индекс */ ?></span>
            <span>
                <input type="text" name="WORK_ZIP" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_ZIP"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_STREET'); /* улица */ ?></span>
            <span>
                <textarea name="WORK_STREET"><?= $arResult["arUser"]["WORK_STREET"]; ?></textarea>
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_MAILBOX'); /* почтовый ящик */ ?></span>
            <span>
                <input type="text" name="WORK_MAILBOX" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_MAILBOX"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_NOTES'); /* дополнительные заметки */ ?></span>
            <span>
                <textarea name="WORK_NOTES"><?= $arResult["arUser"]["WORK_NOTES"]; ?></textarea>
            </span>
        </div>
    </section>

    <?php if ($arResult["INCLUDE_FORUM"] == "Y"): /* если на сайте есть форум */ ?>
        <section>
            <h3><?= GetMessage('MAIN_PROFILE_FORUM_TITLE'); ?></h3>
            <div>
                <span><?= GetMessage('MAIN_PROFILE_FORUM_SHOW_NAME'); ?></span>
                <span>
                    <input type="hidden" name="forum_SHOW_NAME" value="N" />
                    <input type="checkbox" name="forum_SHOW_NAME" value="Y"
                           <?php if ($arResult["arForumUser"]["SHOW_NAME"]=="Y") echo 'checked="checked"';?> />
                </span>
            </div>
            <div>
                <span><?= GetMessage('MAIN_PROFILE_FORUM_DESCRIPTION'); ?></span>
                <span>
                    <input type="text" name="forum_DESCRIPTION" maxlength="255"
                           value="<?= $arResult["arForumUser"]["DESCRIPTION"]; ?>" />
                </span>
            </div>
            <div>
                <span><?= GetMessage('MAIN_PROFILE_FORUM_INTERESTS'); ?></span>
                <span>
                    <textarea name="forum_INTERESTS"><?= $arResult["arForumUser"]["INTERESTS"]; ?></textarea>
                </span>
            </div>
            <div>
                <span><?= GetMessage($MESS['MAIN_PROFILE_FORUM_SIGNATURE']); ?></span>
                <span>
                    <textarea name="forum_SIGNATURE"><?= $arResult["arForumUser"]["SIGNATURE"]; ?></textarea>
                </span>
            </div>
            <div>
                <span><?= GetMessage('MAIN_PROFILE_FORUM_AVATAR'); ?></span>
                <span>
                    <?= $arResult["arForumUser"]["AVATAR_INPUT"]; ?>
                    <?php
                    if (strlen($arResult["arForumUser"]["AVATAR"]) > 0) {
                        echo $arResult["arForumUser"]["AVATAR_HTML"];
                    }
                    ?>
                </span>
            </div>
        </section>
    <?php endif; ?>

    <?php if ($arResult["INCLUDE_BLOG"] == "Y"): /* если на сайте есть блог */ ?>
        <section>
            <h3><?= GetMessage('MAIN_PROFILE_BLOG_TITLE'); ?></h3>
            <div>
                <span><?= GetMessage('MAIN_PROFILE_BLOG_ALIAS')?></span>
                <span>
                    <input type="text" name="blog_ALIAS" maxlength="255"
                           value="<?= $arResult["arBlogUser"]["ALIAS"]; ?>" />
                </span>
            </div>
            <div>
                <span><?= GetMessage('MAIN_PROFILE_BLOG_DESCRIPTION'); ?></span>
                <span>
                    <input type="text" name="blog_DESCRIPTION" maxlength="255"
                           value="<?= $arResult["arBlogUser"]["DESCRIPTION"]; ?>" />
                </span>
            </div>
            <div>
                <span><?= GetMessage('MAIN_PROFILE_BLOG_INTERESTS')?></span>
                <span>
                    <textarea name="blog_INTERESTS"><?= $arResult["arBlogUser"]["INTERESTS"]; ?></textarea>
                </span>
            </div>
            <div>
                <span><?= GetMessage('MAIN_PROFILE_BLOG_AVATAR')?></span>
                <span>
                    <?= $arResult["arBlogUser"]["AVATAR_INPUT"]; ?>
                    <?php
                    if (strlen($arResult["arBlogUser"]["AVATAR"]) > 0) {
                        echo $arResult["arBlogUser"]["AVATAR_HTML"];
                    }
                    ?>
                </span>
            </div>
        </section>
    <?php endif; ?>

    <?php if ($arResult["INCLUDE_LEARNING"] == "Y"): /* профиль студента */ ?>
        <section>
            <h3><?= GetMessage('MAIN_PROFILE_STUDENT_TITLE')?></h3>
            <div>
                <span><?= GetMessage('MAIN_PROFILE_STUDENT_PUBLIC');?>:</span>
                <span>
                    <input type="hidden" name="student_PUBLIC_PROFILE" value="N" />
                    <input type="checkbox" name="student_PUBLIC_PROFILE" value="Y"
                           <?php if ($arResult["arStudent"]["PUBLIC_PROFILE"]=="Y") echo 'checked="checked"'; ?> />
                </span>
            </div>
            <div>
                <span><?= GetMessage('MAIN_PROFILE_STUDENT_RESUME'); ?></span>
                <span>
                    <textarea name="student_RESUME"><?= $arResult["arStudent"]["RESUME"]; ?></textarea>
                </span>
            </div>
            <div>
                <span><?= GetMessage('MAIN_PROFILE_STUDENT_TRANSCRIPT'); ?></span>
                <span><?= $arResult["arStudent"]["TRANSCRIPT"]; ?>-<?= $arResult["ID"]; ?></span>
            </div>
        </section>
    <?php endif; ?>

    <?php if ($arResult["IS_ADMIN"]): /* если это администратор */ ?>
        <section>
        <h3><?= GetMessage('MAIN_PROFILE_ADMIN_NOTES'); ?></h3>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_ADMIN_NOTES'); ?></span>
            <span>
                <textarea name="ADMIN_NOTES"><?= $arResult["arUser"]["ADMIN_NOTES"]; ?></textarea>
            </span>
        </div>
        </section>
    <?php endif; ?>

    <?php /***** Пользовательские свойства *****/ ?>
    <?php if ($arResult["USER_PROPERTIES"]["SHOW"] == "Y"): ?>
        <section>
            <h3>
                <?=
                strlen(trim($arParams["USER_PROPERTY_NAME"])) > 0
                ?
                $arParams["USER_PROPERTY_NAME"]
                :
                GetMessage("USER_TYPE_EDIT_TAB");
                ?>
            </h3>
            <?php foreach ($arResult["USER_PROPERTIES"]["DATA"] as $FIELD_NAME => $arUserField):?>
            <div>
                <span>
                <?php if ($arUserField["MANDATORY"]=="Y"): ?>
                    <i>*</i> <!-- поле обязательно для заполнения -->
                <?php endif; ?>
                <?= $arUserField["EDIT_FORM_LABEL"]; ?>
                </span>
                <span>
                    <?php
                    $APPLICATION->IncludeComponent(
                        "bitrix:system.field.edit",
                        $arUserField["USER_TYPE"]["USER_TYPE_ID"],
                        array(
                            "bVarsFromForm" => $arResult["bVarsFromForm"],
                            "arUserField"   => $arUserField
                        ),
                        null,
                        array("HIDE_ICONS"=>"Y")
                    );
                    ?>
                </span>
            </div>
            <?php endforeach; ?>
        </section>
    <?php endif; ?>
    <?php /***** /Пользовательские свойства *****/ ?>

    <div class="submit">
        <input type="submit" name="save" value="<?= GetMessage('MAIN_PROFILE_FORM_SUBMIT'); ?>">
        <input type="reset" value="<?= GetMessage('MAIN_PROFILE_FORM_RESET'); ?>">
    </p>
</form>

<p><?= $arResult["GROUP_POLICY"]["PASSWORD_REQUIREMENTS"]; /* сообщение о min длине пароля */ ?></p>
<p><i>*</i> <?= GetMessage('MAIN_PROFILE_FORM_REQUIRED'); /* Эти поля обязательны для заполнения */ ?></p>

<?php
if ($arResult["SOCSERV_ENABLED"]) {
    $APPLICATION->IncludeComponent( // связать этот профиль с профилями в социальных сетях
        "bitrix:socserv.auth.split",
        ".default",
        array(
            "SHOW_PROFILES" => "Y",
            "ALLOW_DELETE" => "Y"
        ),
        false
    );
}
?>

</div>

Полей слишком много, поэтому часть из них я удалил. Кроме того, удалил профили для форума и блога. Переделал языковый файл и добавил стили.

<?php
/*
 * Файл local/templates/.default/components/bitrix/main.profile/.default/lang/ru/template.php
 */
$MESS['MAIN_PROFILE_FORM_TITLE']         = 'Профиль пользователя';
$MESS['MAIN_PROFILE_DATA_SAVED']         = 'Изменения сохранены';
$MESS['MAIN_PROFILE_FORM_SUBMIT']        = 'Сохранить';
$MESS['MAIN_PROFILE_FORM_RESET']         = 'Сбросить';
$MESS['MAIN_PROFILE_FORM_REQUIRED']      = 'Эти поля обязательны для заполнения';
$MESS['MAIN_PROFILE_LAST_UPDATE']        = 'Дата обновления';
$MESS['MAIN_PROFILE_LAST_LOGIN']         = 'Последняя авторизация';
$MESS['MAIN_PROFILE_DONT_KNOW']          = 'Нет данных';
// заголовки разделов профиля пользователя
$MESS['MAIN_PROFILE_REGISTER_TITLE']     = 'Регистрационные данные';
$MESS['MAIN_PROFILE_PERSONAL_TITLE']     = 'Личные данные';
$MESS['MAIN_PROFILE_WORK_TITLE']         = 'Информация о работе';
$MESS['MAIN_PROFILE_FORUM_TITLE']        = 'Профиль на форуме';
$MESS['MAIN_PROFILE_BLOG_TITLE']         = 'Профиль в блоге';
$MESS['MAIN_PROFILE_STUDENT_TITLE']      = 'Профиль студента';
$MESS['MAIN_PROFILE_ADMIN_NOTES']        = 'Заметки администратора';
// раздел: Профиль пользователя
$MESS['MAIN_PROFILE_REG_TITLE']          = 'Обращение';
$MESS['MAIN_PROFILE_REG_FNAME']          = 'Имя';
$MESS['MAIN_PROFILE_REG_LNAME']          = 'Фамилия';
$MESS['MAIN_PROFILE_REG_SNAME']          = 'Отчество';
$MESS['MAIN_PROFILE_REG_EMAIL']          = 'E-mail';
$MESS['MAIN_PROFILE_REG_LOGIN']          = 'Логин';
$MESS['MAIN_PROFILE_REG_PASSWORD']       = 'Новый пароль';
$MESS['MAIN_PROFILE_REG_CONFIRM']        = 'Подтверждение пароля';
// раздел: Личные данные
$MESS['MAIN_PROFILE_USER_PROFESSION']    = 'Профессия';
$MESS['MAIN_PROFILE_USER_WWW']           = 'Сайт';
$MESS['MAIN_PROFILE_USER_ICQ']           = 'ICQ';
$MESS['MAIN_PROFILE_USER_GENDER']        = 'Пол';
$MESS['MAIN_PROFILE_USER_MALE']          = 'Мужской';
$MESS['MAIN_PROFILE_USER_FEMALE']         = 'Женский';
$MESS['MAIN_PROFILE_USER_BIRTHDAY']      = 'Дата рождения';
$MESS['MAIN_PROFILE_USER_PHOTO']         = 'Фотография';
$MESS['MAIN_PROFILE_USER_PHONE']         = 'Телефон';
$MESS['MAIN_PROFILE_USER_FAX']           = 'Факс';
$MESS['MAIN_PROFILE_USER_MOBILE']        = 'Мобильный';
$MESS['MAIN_PROFILE_USER_PAGER']         = 'Пейджер';
$MESS['MAIN_PROFILE_USER_PHONES']        = 'Телефоны';
$MESS['MAIN_PROFILE_USER_ADDRESS']       = 'Почтовый адрес';
$MESS['MAIN_PROFILE_USER_COUNTRY']       = 'Страна';
$MESS['MAIN_PROFILE_USER_CITY']          = 'Город';
$MESS['MAIN_PROFILE_USER_ZIP']           = 'Почтовый индекс';
$MESS['MAIN_PROFILE_USER_STREET']        = 'Улица, дом';
$MESS['MAIN_PROFILE_USER_STATE']         = 'Область / край';
$MESS['MAIN_PROFILE_USER_MAILBOX']       = 'Почтовый ящик';
$MESS['MAIN_PROFILE_USER_NOTES']         = 'Дополнительные заметки';
// раздел: Информация о работе
$MESS['MAIN_PROFILE_WORK_COMPANY']       = 'Наименование компании';
$MESS['MAIN_PROFILE_WORK_WWW']           = 'Сайт компании';
$MESS['MAIN_PROFILE_WORK_DEPARTMENT']    = 'Департамент / Отдел';
$MESS['MAIN_PROFILE_WORK_POSITION']      = 'Должность';
$MESS['MAIN_PROFILE_WORK_PROFILE']       = 'Направление деятельности';
$MESS['MAIN_PROFILE_WORK_LOGO']          = 'Логотип компании';
$MESS['MAIN_PROFILE_WORK_PHONE']         = 'Телефон';
$MESS['MAIN_PROFILE_WORK_FAX']           = 'Факс';
$MESS['MAIN_PROFILE_WORK_MOBILE']        = 'Мобильный';
$MESS['MAIN_PROFILE_WORK_PAGER']         = 'Пейджер';
$MESS['MAIN_PROFILE_WORK_PHONES']        = 'Телефоны';
$MESS['MAIN_PROFILE_WORK_ADDRESS']       = 'Почтовый адрес';
$MESS['MAIN_PROFILE_WORK_COUNTRY']       = 'Страна';
$MESS['MAIN_PROFILE_WORK_CITY']          = 'Город';
$MESS['MAIN_PROFILE_WORK_ZIP']           = 'Почтовый индекс';
$MESS['MAIN_PROFILE_WORK_STREET']        = 'Улица, дом';
$MESS['MAIN_PROFILE_WORK_STATE']         = 'Область / край';
$MESS['MAIN_PROFILE_WORK_MAILBOX']       = 'Почтовый ящик';
$MESS['MAIN_PROFILE_WORK_NOTES']         = 'Дополнительные заметки';
// раздел: Профиль на форуме
$MESS['MAIN_PROFILE_FORUM_SHOW_NAME']    = 'Показывать имя';
$MESS['MAIN_PROFILE_FORUM_DESCRIPTION']  = 'Пояснение';
$MESS['MAIN_PROFILE_FORUM_INTERESTS']    = 'Интересы';
$MESS['MAIN_PROFILE_FORUM_SIGNATURE']    = 'Подпись';
$MESS['MAIN_PROFILE_FORUM_AVATAR']       = 'Аватар';
// раздел: Профиль в блоге
$MESS['MAIN_PROFILE_BLOG_ALIAS']         = 'Псевдоним';
$MESS['MAIN_PROFILE_BLOG_DESCRIPTION']   = 'Пояснение';
$MESS['MAIN_PROFILE_BLOG_INTERESTS']     = 'Интересы';
$MESS['MAIN_PROFILE_BLOG_AVATAR']        = 'Аватар';
// раздел: Профиль студента
$MESS['MAIN_PROFILE_STUDENT_PUBLIC']     = 'Разрешить публичный доступ';
$MESS['MAIN_PROFILE_STUDENT_RESUME']     = 'Резюме';
$MESS['MAIN_PROFILE_STUDENT_TRANSCRIPT'] = 'Transcript';
<?php
/*
 * Файл local/templates/.default/components/bitrix/main.profile/.default/template.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
?>

<div class="bitrix-main-profile">

<h2><?= GetMessage('MAIN_PROFILE_FORM_TITLE'); /* Заголовок формы */ ?></h2>

<?php ShowError($arResult["strProfileError"]); /* сообщения об ошибках */ ?>

<?php
if ($arResult['DATA_SAVED'] == 'Y') { // сообщение об успешном сохранении данных
    ShowNote(GetMessage('PROFILE_DATA_SAVED'));
}
?>

<form method="post" name="form1" action="<?= $arResult["FORM_TARGET"]; ?>" enctype="multipart/form-data">

    <?= $arResult["BX_SESSION_CHECK"]; ?>
    <input type="hidden" name="lang" value="<?= LANG; ?>" />
    <input type="hidden" name="ID" value=<?= $arResult["ID"]; ?> />
    <!-- в качестве логина используется e-mail -->
    <input type="hidden" name="LOGIN" maxlength="50" value="<?= $arResult["arUser"]["EMAIL"]; ?>" />

    <section class="clearfix">
        <h3><?= GetMessage('MAIN_PROFILE_REGISTER_TITLE'); /* Регистрационные данные */ ?></h3>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_REG_FNAME'); /* имя */ ?></span>
            <span>
                <input type="text" name="NAME" maxlength="50" value="<?= $arResult["arUser"]["NAME"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_REG_LNAME'); /* фамилия */ ?></span>
            <span>
                <input type="text" name="LAST_NAME" maxlength="50" value="<?= $arResult["arUser"]["LAST_NAME"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_REG_SNAME'); /* отчество */ ?></span>
            <span>
                <input type="text" name="SECOND_NAME" maxlength="50"
                       value="<?= $arResult["arUser"]["SECOND_NAME"]; ?>" />
            </span>
        </div>
        <div>
            <span>
                <?= GetMessage('MAIN_PROFILE_REG_EMAIL'); /* e-mail */ ?>
                <?php if ($arResult["EMAIL_REQUIRED"]): ?>
                    <i>*</i> <!-- поле обязательно для заполнения -->
                <?php endif; ?>
            </span>
            <span>
                <input type="text" name="EMAIL" maxlength="50" value="<?= $arResult["arUser"]["EMAIL"]; ?>" />
            </span>
        </div>
        <?php if ($arResult["arUser"]["EXTERNAL_AUTH_ID"] == ''): /* если авторизация не через внешние сервисы */ ?>
            <div>
                <span><?= GetMessage('MAIN_PROFILE_REG_PASSWORD'); /* новый пароль */ ?></span>
                <span><input type="password" name="NEW_PASSWORD" maxlength="50" value="" autocomplete="off" /></span>
                <?php if ($arResult["SECURE_AUTH"]): /* безопасная авторизация (зашифрованная передача пароля) */ ?>
                    <!-- код удален -->
                <?php endif; ?>
            </div>
            <div>
                <span><?= GetMessage('MAIN_PROFILE_REG_CONFIRM'); /* подтверждение пароля */ ?></span>
                <span>
                    <input type="password" name="NEW_PASSWORD_CONFIRM" maxlength="50" value="" autocomplete="off" />
                </span>
            </div>
        <?php endif; ?>
    </section>

    <section class="clearfix">
        <h3><?= GetMessage('MAIN_PROFILE_PERSONAL_TITLE'); /* Личные данные */ ?></h3>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_PROFESSION'); /* профессия */ ?></span>
            <span>
                <input type="text" name="PERSONAL_PROFESSION" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_PROFESSION"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_WWW'); /* сайт */ ?></span>
            <span>
                <input type="text" name="PERSONAL_WWW" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_WWW"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_ICQ'); /* ICQ */ ?></span>
            <span>
                <input type="text" name="PERSONAL_ICQ" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_ICQ"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_GENDER'); /* пол */ ?></span>
            <span>
                <select name="PERSONAL_GENDER">
                    <option value="">
                        <?= GetMessage('MAIN_PROFILE_DONT_KNOW'); ?>
                    </option>
                    <option value="M"<?=$arResult["arUser"]["PERSONAL_GENDER"]=="M" ? ' selected="selected"':''?>>
                        <?= GetMessage('MAIN_PROFILE_USER_MALE'); ?>
                    </option>
                    <option value="F"<?=$arResult["arUser"]["PERSONAL_GENDER"]=="F" ? ' selected="selected"':''?>>
                        <?= GetMessage('MAIN_PROFILE_USER_FEMALE'); ?>
                    </option>
                </select>
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_PHONE'); /* телефон */ ?></span>
            <span>
                <input type="text" name="PERSONAL_PHONE" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_PHONE"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_MOBILE'); /* мобильный */ ?></span>
            <span>
                <input type="text" name="PERSONAL_MOBILE" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_MOBILE"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_COUNTRY'); /* страна */ ?></span>
            <span><?= $arResult["COUNTRY_SELECT"]; ?></span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_STATE'); /* область */ ?></span>
            <span>
                <input type="text" name="PERSONAL_STATE" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_STATE"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_CITY'); /* город */ ?></span>
            <span>
                <input type="text" name="PERSONAL_CITY" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_CITY"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_ZIP'); /* почтовый индекс */ ?></span>
            <span>
                <input type="text" name="PERSONAL_ZIP" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_ZIP"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_STREET'); /* улица */ ?></span>
            <span>
                <input type="text" name="PERSONAL_STREET" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_STREET"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_USER_NOTES'); /* дополнительные заметки */ ?></span>
            <span>
                <input type="text" name="PERSONAL_NOTES" maxlength="255"
                       value="<?= $arResult["arUser"]["PERSONAL_NOTES"];?>" />
            </span>
        </div>
    </section>

    <section class="clearfix">
        <h3><?= GetMessage('MAIN_PROFILE_WORK_TITLE'); /* Информация о работе */ ?></h3>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_COMPANY'); /* компания */ ?></span>
            <span>
                <input type="text" name="WORK_COMPANY" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_COMPANY"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_WWW'); /* сайт */ ?></span>
            <span>
                <input type="text" name="WORK_WWW" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_WWW"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_DEPARTMENT'); /* отдел */ ?></span>
            <span>
                <input type="text" name="WORK_DEPARTMENT" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_DEPARTMENT"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_POSITION'); /* должность */ ?></span>
            <span>
                <input type="text" name="WORK_POSITION" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_POSITION"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_PROFILE'); /* направление деятельности */ ?></span>
            <span>
                <input type="text" name="WORK_PROFILE" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_PROFILE"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_PHONE'); /* телефон */ ?></span>
            <span>
                <input type="text" name="WORK_PHONE" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_PHONE"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_COUNTRY'); /* страна */ ?></span>
            <span><?= $arResult["COUNTRY_SELECT_WORK"]?></span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_STATE'); /* область */ ?></span>
            <span>
                <input type="text" name="WORK_STATE" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_STATE"]; ?>" />
                </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_CITY'); /* город */ ?></span>
            <span>
                <input type="text" name="WORK_CITY" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_CITY"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_ZIP'); /* почтовый индекс */ ?></span>
            <span>
                <input type="text" name="WORK_ZIP" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_ZIP"]; ?>" />
            </span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_STREET'); /* улица */ ?></span>
            <span><input type="text" name="WORK_STREET" maxlength="255"
                         value="<?= $arResult["arUser"]["WORK_STREET"]; ?>" /></span>
        </div>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_WORK_NOTES'); /* дополнительные заметки */ ?></span>
            <span>
                <input type="text" name="WORK_NOTES" maxlength="255"
                       value="<?= $arResult["arUser"]["WORK_NOTES"]; ?>" />
            </span>
        </div>
    </section>

    <?php if ($arResult["IS_ADMIN"]): /* если это администратор */ ?>
        <section class="admin-notes clearfix">
        <h3><?= GetMessage('MAIN_PROFILE_ADMIN_NOTES'); ?></h3>
        <div>
            <span><?= GetMessage('MAIN_PROFILE_ADMIN_NOTES'); ?></span>
            <span><textarea name="ADMIN_NOTES"><?= $arResult["arUser"]["ADMIN_NOTES"]; ?></textarea></span>
        </div>
        </section>
    <?php endif; ?>

    <?php /***** Пользовательские свойства *****/ ?>
    <?php if ($arResult["USER_PROPERTIES"]["SHOW"] == "Y"): ?>
        <section class="clearfix">
            <h3>
            <?=
            strlen(trim($arParams["USER_PROPERTY_NAME"])) > 0
            ?
            $arParams["USER_PROPERTY_NAME"]
            :
            GetMessage("USER_TYPE_EDIT_TAB");
            ?>
            </h3>
            <?php foreach ($arResult["USER_PROPERTIES"]["DATA"] as $FIELD_NAME => $arUserField):?>
            <div>
                <span>
                <?php if ($arUserField["MANDATORY"]=="Y"): ?>
                    <i>*</i> <!-- поле обязательно для заполнения -->
                <?php endif; ?>
                <?= $arUserField["EDIT_FORM_LABEL"]; ?>
                </span>
                <span>
                    <?php
                    $APPLICATION->IncludeComponent(
                        "bitrix:system.field.edit",
                        $arUserField["USER_TYPE"]["USER_TYPE_ID"],
                        array(
                            "bVarsFromForm" => $arResult["bVarsFromForm"],
                            "arUserField"   => $arUserField
                        ),
                        null,
                        array("HIDE_ICONS"=>"Y")
                    );
                    ?>
                </span>
            </div>
            <?php endforeach; ?>
        </section>
    <?php endif; ?>
    <?php /***** /Пользовательские свойства *****/ ?>

    <div>
        <input type="submit" name="save" value="<?= GetMessage('MAIN_PROFILE_FORM_SUBMIT'); ?>">
        <input type="reset" value="<?= GetMessage('MAIN_PROFILE_FORM_RESET'); ?>">
    </div>
</form>

<p><?= $arResult["GROUP_POLICY"]["PASSWORD_REQUIREMENTS"]; /* сообщение о min длине пароля */ ?></p>
<p><i>*</i> <?= GetMessage('MAIN_PROFILE_FORM_REQUIRED'); /* Эти поля обязательны для заполнения */ ?></p>

</div>
/*
 * Файл local/templates/.default/components/bitrix/main.profile/.default/style.css
 */
.bitrix-main-profile {

}
    .bitrix-main-profile > p {
        margin: 1em 0;
    }
    .bitrix-main-profile > h2 {
        margin-bottom: 30px;
    }
        .bitrix-main-profile > p > a {
            text-decoration: underline;
        }
    .bitrix-main-profile > form {

    }
        .bitrix-main-profile > form > section {
            border: 1px solid #ccc;
            padding: 15px 10px 0 10px;
            margin-bottom: 40px;
            position: relative;
        }
            .bitrix-main-profile > form > section > h3 {
                font-size: 18px;
                position: absolute;
                top: -13px;
                background: #eee;
                padding: 0 10px;
                color: #999;
            }
            .bitrix-main-profile > form > section > div {
                width: 50%;
                margin-bottom: 15px;
                float: left;
                box-sizing: border-box;
            }
            .bitrix-main-profile > form  > section > div:nth-of-type(even) {
                padding-left: 1%;
            }
            .bitrix-main-profile > form  > section > div:nth-of-type(odd) {
                padding-right: 1%;
            }
                .bitrix-main-profile > form > section > div > span {
                    display: block;
                }
                .bitrix-main-profile > form > section > div > span:first-child {
                    margin-bottom: 5px;
                }
                    .bitrix-main-profile > form > section > div > span input[type="text"],
                    .bitrix-main-profile > form > section > div > span input[type="password"],
                    .bitrix-main-profile > form > section > div > span select {
                        width: 100%;
                        padding: 5px;
                        border: 1px solid #ccc;
                        height: 30px;
                    }
        .bitrix-main-profile > form > section:last-of-type {
            margin-bottom: 20px;
        }
        .bitrix-main-profile > form > section.admin-notes > div {
            width: 100%;
        }
            .bitrix-main-profile > form > section.admin-notes > div > span > textarea {
                width: 100%;
            }
            .bitrix-main-profile > form > div > input[type="submit"],
            .bitrix-main-profile > form > div > input[type="reset"] {
                width: 15%;
                padding: 5px;
                background: #333;
                color: #fff;
                border: none;
                margin-top: 10px;
            }
    .bitrix-main-profile i {
        font-style: normal;
        font-weight: bold;
        color: #f00;
    }

И вот что получилось в результате:

Добавим ссылку на профиль пользователя в файл /auth/index.php:

<?php
// обратите внимание на эту константу
define("NEED_AUTH", true);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Авторизация и регистрация");
?>

<p>Вы зарегистрированы и успешно авторизовались.</p>
<p><a href="/auth/profile.php">Мой профиль</a></p>
<?php
// ссылка для выхода из личного кабинета
$logout = $APPLICATION->GetCurPageParam(
    "logout=yes",
    array(
        "login",
        "logout",
        "register",
        "forgot_password",
        "change_password"
    )
);
?>
<p><a href="<?= $logout; ?>">Выйти</a></p>

<?php
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
?>

Системный компонент system.auth.form

Этот компонент предназначен для размещения формы авторизации в любом месте шаблона сайта: в шапке сайта, в левой или правой колонке. Чтобы пользователю не надо было переходить на страницу авторизации, а он мог авторизоваться на любой странице сайта. Пример вызова компонента

$APPLICATION->IncludeComponent(
    "bitrix:system.auth.form",
    "",
    array(
        "FORGOT_PASSWORD_URL" => "/auth/",    // Страница забытого пароля
        "PROFILE_URL" => "/auth/profile.php", // Страница профиля
        "REGISTER_URL" => "/auth/",           // Страница регистрации
        "SHOW_ERRORS" => "Y",                 // Показывать ошибки
    )
);

Я размещу вызов компонента в шаблоне главной страницы, в правой колонке, после формы поиска:

Теперь скопируем шаблон компонента и оформим под наш дизайн:

  • откуда: bitrix/components/bitrix/system.auth.form/templates/.default
  • куда: local/templates/.default/components/bitrix/system.auth.form/.default

После внесения изменений шаблон имеет вид:

<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.form/.default/template.php
 */
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
CJSCore::Init();
?>

<div class="system-auth-form">

<h3><?= GetMessage('SYS_AUTH_FORM_TITLE'); /* заголовок формы */ ?></h3>

<?php
// сообщения об ошибках при заполнении формы
if ($arResult['SHOW_ERRORS'] == 'Y' && $arResult['ERROR']) {
    ShowMessage($arResult['ERROR_MESSAGE']);
}
?>

<?php if ($arResult["FORM_TYPE"] == "login"): /* пользователь не авторизован, показываем форму авторизации */ ?>

    <form name="system_auth_form<?= $arResult["RND"]; ?>" method="post"
          target="_top" action="<?= $arResult["AUTH_URL"]; ?>">

        <?php if ($arResult["BACKURL"] <> ''): ?>
            <input type="hidden" name="backurl" value="<?= $arResult["BACKURL"]; ?>" />
        <?php endif; ?>

        <?php foreach ($arResult["POST"] as $key => $value): /* передача полученных POST-параметров */ ?>
            <input type="hidden" name="<?= $key; ?>" value="<?= $value; ?>" />
        <?php endforeach; ?>

        <input type="hidden" name="AUTH_FORM" value="Y" />
        <input type="hidden" name="TYPE" value="AUTH" />

        <div>
            <span>
                <?= GetMessage('SYS_AUTH_FORM_LOGIN'); /* поле логин */ ?>
                <i>*</i> <!-- поле обязательно для заполнения -->
            </span>
            <span>
                <input type="text" name="USER_LOGIN" maxlength="50" value="" />
            </span>
        </div>

        <script>
            BX.ready(function() {
                var loginCookie = BX.getCookie("<?= CUtil::JSEscape($arResult["~LOGIN_COOKIE_NAME"]); ?>");
                if (loginCookie) {
                    var form = document.forms["system_auth_form<?= $arResult["RND"]; ?>"];
                    var loginInput = form.elements["USER_LOGIN"];
                    loginInput.value = loginCookie;
                }
            });
        </script>

        <div>
            <span>
                <?= GetMessage('SYS_AUTH_FORM_PASSWORD'); /* поле пароль */ ?>
                <i>*</i> <!-- поле обязательно для заполнения -->
            </span>
            <span>
                <input type="password" name="USER_PASSWORD" maxlength="50" autocomplete="off" />
            </span>
        </div>

        <?php if ($arResult["SECURE_AUTH"]): /* безопасная авторизация (зашифрованная передача пароля пользователя) */ ?>
            <!-- код удален -->
        <?php endif?>

        <?php if ($arResult["CAPTCHA_CODE"]): /* если используется CAPTCHA */ ?>
            <div class="captcha">
                <h4><?php echo GetMessage('SYS_AUTH_FORM_CAPTCHA_TITLE'); /* Защита от роботов */ ?></h4>
                <input type="hidden" name="captcha_sid" value="<?= $arResult["CAPTCHA_CODE"]; ?>" />
                <img src="/bitrix/tools/captcha.php?captcha_sid=<?= $arResult["CAPTCHA_CODE"]; ?>"
                     width="180" height="40" alt="CAPTCHA" />
                <span>
                    <?= GetMessage('SYS_AUTH_FORM_CAPTCHA_TEXT'); /* введите код с картинки */ ?>
                    <i>*</i> <!-- поле обязательно для заполнения -->
                </span>
                <span>
                    <input type="text" name="captcha_word" maxlength="50" value="" />
                </span>
            </div>
        <?php endif; ?>

        <?php if ($arResult["STORE_PASSWORD"] == "Y"): /* checkbox «Запомнить меня» */ ?>
            <div class="remember">
                <input type="checkbox" id="USER_REMEMBER_frm" name="USER_REMEMBER" value="Y" />
                <label for="USER_REMEMBER_frm"><?= GetMessage('SYS_AUTH_FORM_REMEMBER'); ?></label>
            </div>
        <?php endif; ?>

        <div class="submit">
            <input type="submit" name="Login"
                   value="<?= GetMessage('SYS_AUTH_FORM_SUBMIT_LOGIN'); /* кнопка отправки формы */ ?>" />
        </div>

    </form>

    <?php if ($arResult["NEW_USER_REGISTRATION"] == "Y"): /* ссылка на страницу регистрации */ ?>
        <p>
            <a href="<?= $arResult["AUTH_REGISTER_URL"]; ?>" rel="nofollow">
                <?= GetMessage('SYS_AUTH_FORM_REG_USER'); ?>
            </a>
        </p>
    <?php endif?>

    <p>
        <a href="<?= $arResult["AUTH_FORGOT_PASSWORD_URL"]; ?>" rel="nofollow">
            <?= GetMessage('SYS_AUTH_FORM_FORGOT'); /* ссылка на страницу восстановления пароля */ ?>
        </a>
    </p>

<?php else: /* пользователь авторизован, показываем имя и логин пользователя, ссылку на профиль и кнопку выхода */ ?>

    <p><?= $arResult["USER_NAME"]; /* имя пользователя */ ?></p>
    <p><?= $arResult["USER_LOGIN"]; /* логин пользователя */ ?></p>
    <p>
        <a href="<?= $arResult["PROFILE_URL"]; ?>">
            <?= GetMessage('SYS_AUTH_FORM_PROFILE'); /* ссылка на профиль */ ?>
        </a>
    </p>

    <form action="<?= $arResult["AUTH_URL"]; ?>">

        <?php foreach ($arResult["GET"] as $key => $value): /* передача полученных GET-параметров */ ?>
            <input type="hidden" name="<?= $key; ?>" value="<?= $value; ?>" />
        <?php endforeach; ?>

        <input type="hidden" name="logout" value="yes" />

        <div class="submit">
            <input type="submit" name="logout_butt"
                   value="<?= GetMessage('SYS_AUTH_FORM_SUBMIT_LOGOUT'); /* кнопка отправки формы */ ?>" />
        </div>

    </form>

<?php endif; ?>

</div>
<?php
/*
 * Файл local/templates/.default/components/bitrix/system.auth.form/.default/lang/ru/template.php
 */
$MESS['SYS_AUTH_FORM_TITLE']          = 'Личный кабинет';
// авторизация теперь по e-mail
$MESS['SYS_AUTH_FORM_LOGIN']          = 'E-mail';
$MESS['SYS_AUTH_FORM_PASSWORD']       = 'Пароль';
$MESS['SYS_AUTH_FORM_REMEMBER']       = 'Запомнить меня';
$MESS['SYS_AUTH_FORM_CAPTCHA_TITLE']  = 'Защита от роботов';
$MESS['SYS_AUTH_FORM_CAPTCHA_TEXT']   = 'Введите символы с картинки';
$MESS['SYS_AUTH_FORM_SUBMIT_LOGIN']   = 'Войти';
$MESS['SYS_AUTH_FORM_SUBMIT_LOGOUT']  = 'Выйти';
$MESS['SYS_AUTH_FORM_REG_USER']       = 'Зарегистрироваться';
$MESS['SYS_AUTH_FORM_FORGOT']         = 'Забыли пароль?';
$MESS['SYS_AUTH_FORM_PROFILE']        = 'Мой профиль';
/*
 * Файл local/templates/.default/components/bitrix/system.auth.form/.default/style.css
 */
.system-auth-form {
    margin-top: 15px;

}
    .system-auth-form > p {
        margin: 5px 0;
    }
    .system-auth-form > h3 {
        margin-bottom: 10px;
    }
        .system-auth-form > p > a {
            text-decoration: underline;
        }
        .system-auth-form > form > div {
            margin-bottom: 5px;
        }
            .system-auth-form > form > div > span {
                display: block;
            }
            .system-auth-form > form > div > span:first-child {
                margin-bottom: 2px;
            }
                .system-auth-form > form > div > span > input[type="text"],
                .system-auth-form > form > div > span > input[type="password"] {
                    width: 100%;
                    padding: 3px;
                    border: 1px solid #ccc;
                }
        .system-auth-form > form > div.captcha {
            border: 1px solid #ccc;
            padding: 15px 10px 10px 10px;
            position: relative;
            margin-top: 15px;
        }
            .system-auth-form > form > div.captcha > h4 {
                position: absolute;
                top: -10px;
                font-weight: normal;
                font-size: 16px;
                background: #eee;
                padding: 0 10px;
                color: #999;
            }
            .system-auth-form > form > div.captcha > span:first-of-type {
                margin-top: 10px;
            }
        .system-auth-form > form > div.remember label {
            font-weight: normal;
            cursor: pointer;
            border-bottom: 1px dashed #333;
            position: relative;
            top: -3px;
            margin-left: 5px;
        }
            .system-auth-form > form > div.submit > input[type="submit"] {
                width: 50%;
                padding: 5px;
                background: #333;
                color: #fff;
                border: none;
                margin-top: 10px;
            }
    .system-auth-form i {
        font-style: normal;
        font-weight: bold;
        color: #f00;
    }

Поиск: CMS • Web-разработка • Авторизация • Битрикс • Компонент • Регистрация • Форма • Шаблон компонента • Шаблон сайта

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.