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

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка сайта онлайн-школы на 1С-Битрикс
Сложная
от 1 недели до 3 месяцев
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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 Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Разработка сайта онлайн-школы на 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 недель.