Настройка Office для личного кабинета на MODX

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Настройка Office для личного кабинета на MODX
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Настройка Office для личного кабинета на MODX

Office — Extra MODX для создания личных кабинетов пользователей: регистрация, вход, восстановление пароля, редактирование профиля, смена пароля. Работает через AJAX, без перезагрузки страницы.

Установка

Package Manager → Office → установить. Зависимости: pdoTools, Email.

Структура страниц

Личный кабинет (шаблон: lk-base)
├── Профиль (/profile/)
├── Настройки (/settings/)
├── История заказов (/orders/)  [опционально]
└── Выход (/logout/)

Авторизация:
├── Вход (/login/)
└── Регистрация (/register/)
└── Восстановление пароля (/forgot-password/)

Форма входа

[[!OfficeAuth?
    &loginTpl=`officeLoginForm`
    &successTpl=`officeLoginSuccess`
    &redirectTo=`42`
    &loginContext=`web`
]]

Чанк officeLoginForm:

<form class="login-form" data-office="auth">
    <div class="form-group">
        <label for="username">Email</label>
        <input type="email" id="username" name="username" required>
        [[+fi.error.username:notempty=`<span class="error">[[+fi.error.username]]</span>`]]
    </div>
    <div class="form-group">
        <label for="password">Пароль</label>
        <input type="password" id="password" name="password" required>
    </div>
    <button type="submit">Войти</button>
    <a href="/forgot-password/">Забыли пароль?</a>
</form>

Форма регистрации

[[!OfficeRegister?
    &submitVar=`office-register`
    &successTpl=`officeRegisterSuccess`
    &activateTpl=`officeActivateEmail`
    &activateSubject=`Подтверждение регистрации`
    &groups=`Member`
    &redirectTo=`42`
    &validate=`username:email:required,password:required:minLength=^8^,password_confirm:password_confirm=^password^`
    &placeholderPrefix=`of.`
]]

Форма редактирования профиля

[[!OfficeProfile?
    &submitVar=`office-profile`
    &successTpl=`officeProfileSuccess`
    &placeholderPrefix=`of.`
]]

<form data-office="profile">
    <input type="text" name="fullname" value="[[!+of.fullname]]" placeholder="Полное имя">
    <input type="email" name="email" value="[[!+of.email]]" placeholder="Email" required>
    <input type="text" name="phone" value="[[!+of.phone]]" placeholder="Телефон">
    [[- Кастомные расширенные поля ]]
    <input type="text" name="extended[company]" value="[[!+of.extended.company]]" placeholder="Компания">
    <button type="submit">Сохранить</button>
</form>

Смена пароля

[[!OfficeChangePassword?
    &validate=`password_old:required,password:required:minLength=^8^,password_confirm:password_confirm=^password^`
]]

Восстановление пароля

[[!OfficeForgotPassword?
    &emailSubject=`Восстановление пароля`
    &emailTpl=`officeForgotPasswordEmail`
    &redirectTo=`reset-password`
]]

Проверка авторизации в шаблоне

[[- Показать разное содержимое для авторизованных / гостей ]]
[[!OfficeAuth?
    &loginTpl=`@INLINE <a href="/login/" class="btn">Войти</a>`
    &logoutTpl=`@INLINE Привет, [[+username]]! <a href="/logout/">Выйти</a>`
]]

[[- Редирект неавторизованных на страницу входа ]]
[[!OfficeCheck? &redirectTo=`login-page-id`]]

Кастомные поля профиля через Extended

MODX хранит расширенные данные пользователя в JSON в поле extended:

$user = $modx->getObject('modUser', $userId);
$profile = $user->getOne('Profile');

// Записать
$profile->set('extended', json_encode([
    'company' => 'ACME Corp',
    'inn'     => '7700000000',
    'vip'     => true,
]));
$profile->save();

// Прочитать
$extended = json_decode($profile->get('extended'), true);
$company = $extended['company'] ?? '';

Сроки

Настройка личного кабинета (вход, регистрация, профиль, смена пароля) — 3–4 дня.