Розробка сайту онлайн-школи на 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Розробка сайту онлайн-школи на 1С-Бітрікс
Складна
від 1 тижня до 3 місяців
Часті питання

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

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Розробка сайту онлайн-школи на 1С-Бітрікс

Онлайн-школа на Бітріксі — це не LMS у чистому вигляді. Moodle або iSpring краще справляються з прохідженням курсів, тестами та аналітикою навчання. Але коли завдання — продавати курси, керувати доступом після оплати, сегментувати аудиторію та запускати маркетингові кампанії, Бітрікс з модулем sale виявляється потужною платформою. LMS-частина або будується як кастомний модуль, або підключається зовнішня система через API.

Розберемо детально продаж курсів та контроль доступу — це архітектурне ядро проекту.

Продаж курсів та контроль доступу до контенту

Ключова механіка: користувач оплачує курс на сайті та отримує доступ до його матеріалів. Звучить просто, але реалізація залежить від бізнес-моделі. Розова покупка, підписка, пакети курсів, корпоративний доступ — кожен варіант вимагає своєї архітектури.

Каталог курсів

Інфоблок Courses з торговим каталогом (підключений модуль catalog). Розділи — напрямки навчання (програмування, дизайн, маркетинг, мови). Властивості елемента:

Властивість Тип Призначення
LEVEL Список Початковий / середній / продвинутий
FORMAT Список Відеокурс / вебінар / текст / змішаний
DURATION_HOURS Число Загальна тривалість у годинах
LESSONS_COUNT Число Кількість уроків
TEACHER_ID Привʼязка E Викладач (інфоблок Teachers)
PREVIEW_LESSONS Множественна привʼязка E Безплатні уроки для перегляду
CERTIFICATE Логічна Видається ли сертифікат
START_DATE Дата Дата старту (для потокових курсів)
ACCESS_DAYS Число Термін доступу після покупки (0 = бессрочно)
USER_GROUP_ID Число ID групи користувачів для доступу

Ціна курсу — стандартна властивість торгового каталогу (b_catalog_price). Для курсів з варіантами (базовий / з перевіркою ДЗ / з менторством) використовуються торговельні пропозиції (SKU) — елементи вкладеного інфоблока з різними цінами й набором включених можливостей.

Механізм контролю доступу

Є три підходи, кожен з компромісами:

Варіант 1: Групи користувачів. При оплаті замовлення користувач додається в групу, привʼязану до курсу. Контент курсу (сторінки, файли) захищений правами доступу цієї групи. Це штатний механізм Бітрікса, працює на рівні модуля main.

Реалізація: обробник події OnSaleOrderPaid. При переході замовлення в статус «Оплачено» скрипт отримує список товарів, для кожного товару-курсу — значення властивості USER_GROUP_ID, та додає користувача в відповідну групу через CUser::SetUserGroup().

// Псевдокод обробника
$order = \Bitrix\Sale\Order::load($orderId);
foreach ($order->getBasket() as $item) {
    $courseId = $item->getProductId();
    $groupId = getGroupIdByCourse($courseId);
    addUserToGroup($order->getUserId(), $groupId);
}

Проблема цього підходу — масштабованість. При 200 курсах — 200 груп користувачів. Керування стає громіздким. Крім того, якщо потрібен часовий доступ (курс на 90 днів), потрібна cron-задача, яка щодня перевіряє терміни та виключає користувачів з груп.

Варіант 2: Окрема таблиця доступів. Створюється Highload-блок CourseAccess:

Поле Тип Призначення
UF_USER_ID Число ID користувача
UF_COURSE_ID Число ID курсу
UF_ORDER_ID Число ID замовлення
UF_DATE_FROM Дата/час Початок доступу
UF_DATE_TO Дата/час Закінчення доступу (null = бессрочно)
UF_STATUS Список active / expired / revoked

При оплаті — створюється запис в CourseAccess. При відображенні контенту курсу — перевірка наявності активної записи для поточного користувача. Cron-агент щодня оновлює UF_STATUS для записів зі сплином UF_DATE_TO.

Гнучкіший варіант: легко реалізувати обмежений доступ, заморозку, продовження, корпоративні ліцензії (кілька користувачів на одне замовлення).

Варіант 3: Гібрид. Групи користувачів для базового розмежування (зареєстрований / купив хоча б один курс / підписник), Highload-блок для точкового контролю по конкретним курсам. Це оптимальний підхід для шкіл з 20+ курсами.

Платіжні системи

Модуль sale підтримує стандартні платіжні системи: ЮKassa (бувш. Яндекс.Касса), Робокасса, CloudPayments, Stripe. Для онлайн-школи критичні:

  • Рекурентні платежі — для підписочної моделі. ЮKassa та CloudPayments підтримують через збереження токену карти
  • Чеки за 54-ФЗ — автоматична фіскалізація через ОФД. У Бітріксі налаштовується через обробник платіжної системи: параметри PS_IS_CASH та інтеграція з АТОЛ, OrangeData або хмарною касою від платіжного агрегатора
  • Повернення — автоматичне повернення через API платіжної системи при скасуванні замовлення

Промокоди

Модуль sale має штатний механізм купонів та правил кошика. Промокод — це купон (b_sale_discount_coupon), привʼязаний до правила скидки (b_sale_discount). Типи купонів: одноразовий, багаторазовий, на одного користувача.

Для реферальної програми — кастомний модуль. Схема: користувач отримує унікальний реферальний код (зберігається в UF_REFERRAL_CODE профілю). Запрошений користувач при реєстрації указує код. При покупці курсу запрошеним — реферер отримує бонус (запис у Highload-блоці ReferralBonuses): скидку на наступну покупку або начислення на внутрішній рахунок (sale.account).

Каталог курсів: відображення та навігація

Компонент catalog.section виводить курси з фільтруванням:

  • За напрямком (розділ інфоблока)
  • За рівнем складності
  • За форматом (відео / вебінар / текст)
  • За викладачем
  • За наявністю сертифіката
  • За ціною (діапазон)

Карточка курсу містить: назву, коротке описання, викладача (фото + імʼя), тривалість, кількість уроків, рейтинг (середня оцінка від тих, хто пройшов), ціну, кнопку «Купити» або «Почати безплатно» (для курсів з безплатними вводними уроками).

Детальна сторінка — компонент catalog.element з кастомним шаблоном: програма курсу (список уроків з позначкою «безплатний» / «платний»), описання, про автора, відгуки випускників, блок покупки.

LMS-функціонал

Власна LMS на Бітріксі — це кастомний модуль. Штатних інструментів немає. Основні сутності:

Уроки — інфоблок Lessons, привʼязаний до курсу. Властивості: порядковий номер, тип контенту (відео/текст/тест), відео-URL (Vimeo, Kinescope — для захисту від скачування), текстовий контент (у деталізованому описанні), тривалість, матеріали для скачування.

Прогрес проходження — Highload-блок UserProgress: UF_USER_ID, UF_LESSON_ID, UF_STATUS (not_started / in_progress / completed), UF_COMPLETED_AT, UF_SCORE (для тестів). Прогрес оновлюється AJAX-запитом: при просмотрі відео до кінця, при проходженні тесту, при натисненні «Урок пройдено».

Тести — Highload-блок TestQuestions: UF_LESSON_ID, UF_QUESTION_TEXT, UF_ANSWERS (JSON-масив варіантів), UF_CORRECT_ANSWER, UF_TYPE (single_choice / multiple_choice / text_input). Результати тестів — в UserProgress з деталізацією в окремому HL-блоці TestResults.

Сертифікати — генерація PDF за шаблоном при завершенні курсу (всі уроки в статусі completed, тести пройдені з мінімальним балом). Шаблон — mPDF з підстановкою ПІБ, назви курсу, дати, унікального номера. Номер сертифіката — для верифікації на сайті за прямим посиланням.

Альтернатива: інтеграція з Moodle

Якщо LMS-функціонал критичний та потрібна глибока аналітика навчання, розумніше інтегрувати Бітрікс з Moodle через Moodle Web Services API. Бітрікс відповідає за вітрину, продаж та маркетинг, Moodle — за навчання. При оплаті курсу на Бітріксі — API-запит до Moodle для запису користувача на курс (core_enrol_get_enrolled_users, enrol_manual_enrol_users).

Аналогічно — інтеграція з GetCourse через їхній API для шкіл, що вже працюють на цій платформі, але потребують гнучкішу вітрину.

Вебінарна кімната

Бітрікс не містить власного вебінарного модуля. Інтеграція з зовнішніми сервісами:

  • Zoom — через Zoom API (OAuth 2.0). Створення вебінара: POST /v2/users/{userId}/webinars. Реєстрація учасника: POST /v2/webinars/{webinarId}/registrants. Посилання для входу видається після оплати або за записом
  • Телемост / VK Звонки — для російських шкіл, які уникають зарубіжних сервісів

Розклад вебінарів — інфоблок Webinars: дата/час, тема, викладач, посилання на кімнату (заповнюється автоматично при створенні через API), запис вебінара (посилання на відео, доступна після завершення).

Рассилки за сегментами

Модуль sender у Бітріксі підтримує сегментацію одержувачів. Сегменти для онлайн-школи:

  • Купили курс X, але не почали прохідження (мотиваційне листування)
  • Пройшли 50% курсу (нагадування продовжити)
  • Завершили курс (пропозиція наступного рівня — upsell)
  • Зареєстровані, але не купили (welcome-ланцюжок → пропозиція безплатного мні-курсу)
  • Неактивні 30+ днів (реактивація)

Сегменти будуються через SQL-запити до Highload-блоків CourseAccess та UserProgress. Кожен сегмент — connector у модулі sender, реалізуваний як PHP-клас, що наслідує \Bitrix\Sender\Connector\Base.

Терміни реалізації

Масштаб Опис Термін
Монокурс / мні-школа 1-5 курсів, продаж через sale, базовий ЛК, відеоуроки на Vimeo 6-8 тижнів
Середня онлайн-школа 10-30 курсів, підписочна модель, тести, сертифікати, вебінари, рассилки 14-20 тижнів
Крупна платформа 50+ курсів, інтеграція з Moodle, реферальна програма, корпоративні ліцензії, мобільний додаток (API) 24-32 тижні

Основний час йде на LMS-функціонал. Якщо інтегруватися з Moodle або GetCourse замість розробки з нуля — терміни скорочуються на 4-8 тижнів.