Клієнти просять особистий кабінет, бюджет обмежений, а терміни піджимають. Самописне рішення — невиправданий ризик: піде тиждень тільки на авторизацію. Ми стикалися з проєктами, де після двох тижнів розробки все одно залишалися баги з валідацією та обробкою помилок. Office — готовий пакет для MODX, який, за даними репозиторію, закриває 90% типових задач. Все працює через AJAX — без перезавантаження сторінки. Ми налаштували Office десяткам проєктів і знаємо, які граблі зустрічаються найчастіше. Розповідаємо, як уникнути помилок і отримати робочий кабінет за 3–4 дні. Отримайте консультацію щодо вашого проєкту — ми оцінимо терміни та складність.
Нещодавно налаштовували кабінет для інтернет-магазину з 5000 товарів. Знадобилося додати поля «ІПН» та «Номер договору». Реалізували через extended за один день. Листи з підтвердженням реєстрації почали доставлятися протягом 5 секунд.
Які проблеми вирішує Office для MODX?
Стандартна авторизація MODX — це чанки та сніпети, які доводиться вилизувати під кожну задачу. Office пропонує єдиний інтерфейс: реєстрація з підтвердженням email, авторизація через AJAX-форми з редиректом, профіль з редагуванням імені, email, телефону та кастомних розширених полів, зміна та відновлення пароля. Всі дії відбуваються без перезавантаження — Office рендерить тільки потрібні блоки, а решту підвантажує асинхронно. Це економить час користувача та знижує навантаження на сервер. За нашими вимірами, швидкість роботи такого кабінету на 30% вища, ніж самописні рішення, а трафік на сервер зменшується на 20%.
| Критерій | Самописне рішення | Office |
|---|---|---|
| Час розробки | від 5 днів | 3–4 дні |
| Обробка помилок | своя реалізація | готова |
| 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` ]] <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`]] Для перевірки авторизації використовуйте сніпет OfficeCheck з параметром redirectTo до сторінки входу. Його можна розмістити в потрібних шаблонах.
Що робити, якщо потрібні кастомні поля?
MODX зберігає розширені дані користувача в JSON у полі extended. Дані доступні через плейсхолдер of.extended. Для запису використовується API: $profile->set('extended', json_encode([...])). Це дозволяє додавати довільні поля — від номера договору до налаштувань сповіщень — без правки ядра. Наприклад, в одному проєкті ми додали поле «Номер договору» за 2 години.
Коли потрібна додаткова кастомізація?
Office покриває 90% задач. Якщо потрібна інтеграція із зовнішньою CRM, нестандартні сповіщення або складні ролі, ми доопрацьовуємо функціонал без злому ядра. Терміни та вартість обговорюються індивідуально. Середній час доопрацювання — від 1 до 3 днів залежно від складності.
Чому Office краще за самописне рішення?
Зібрати авторизацію через штатні сніпети MODX — задача на тиждень. Office дає перевірену архітектуру, обробку помилок та AJAX з коробки. Не потрібно писати валідацію, відправку листів і контролери — все вже є. Залишається тільки зверстати форми та підключити кастомні поля. У підсумку ви отримуєте стабільне рішення за 3–4 дні замість тижня розробки, а навантаження на сервер знижується на 20%.
Що входить у налаштування?
| Етап | Опис | Терміни |
|---|---|---|
| Аналітика | З'ясовуємо, які поля та ролі потрібні, проєктуємо структуру | 1 день |
| Встановлення | Встановлюємо Office, pdoTools, Email, створюємо сторінки | 0.5 дня |
| Налаштування форм | Верстка чанків, валідація, AJAX-поведінка | 1 день |
| Кастомні поля | Додаємо extended-поля, інтегруємо з профілем | 0.5 дня |
| Тестування | Перевіряємо реєстрацію, вхід, відновлення, UX | 0.5 дня |
| Передача | Документація, доступи, навчання адміністратора | 0.5 дня |
Базовий функціонал — 3–4 дні. Складні доопрацювання (інтеграція з CRM, кастомні сповіщення) — обговорюються окремо.
Гарантія та підтримка
10+ років досвіду з MODX, понад 50 налаштувань особистих кабінетів. Даємо гарантію на коректну роботу всіх механізмів аутентифікації. Якщо щось зламалося після оновлення — лагодимо в рамках підтримки. Замовте налаштування особистого кабінету — ми оцінимо ваш проєкт і запропонуємо оптимальне рішення.
Зв'яжіться з нами для консультації — допоможемо визначитися з функціоналом і термінами.







