В общем и целом Битрикс хорошая CMS в своем сегменте и имеет большой набор решений под множество задач. В редакциях «Бизнес» и «Энтерпрайз» есть модуль «Обучение» который по сути является инструментом для дистанционного образования. И в нем есть даже импорт SCORM курсов. Однако это хорошо звучит лишь в описании, а по факту данный модуль не обновлялся с 2012 года и даже не поддерживает возможности нового ядра Битрикс. Мало того, анализ и статистика обучающих процессов находится в зачаточном состоянии, а импорт SCORM позволяет перенести лишь несколько процентов полезной информации из пакета в систему.
Если у вас есть задача сделать портал на котором вы собираетесь продавать свои и/или чужие курсы с возможностью дистанционного обучения, то скорее всего вы будет смотреть в сторону готовых площадок и покупать у них абонентскую плату за право использовать их ресурсы. А что делать если у вас есть корпоративный сайт на Битрикс и вы решили развивать направление дистанционное решение на нем?
Тут два пути:
путь 1 - это интеграция по API с сервисами, которые предоставляют возможность дистанционного обучения на стороннем сайте со сбором всей статистики и предоставления доступа к ней;
путь 2 – создание собственного модуля дистанционного обучения с возможностью сбора статистики (LMS).
Второй вариант подходит организациям которые не хотят привязываться к сторонним ресурсам (в том числе из-за вопросов безопасности), а также планируют использовать модуль дистанционного образования (или его отдельные элементы) и анализа данных по своему усмотрению, не привязываясь к схемам которые предоставляют интеграторы систем дистанционного образования.
Мы пошли вторым путем, создав собственный модуль дистанционного образования со своим решением по сбору и обработке статистики, данные из которого перейдут в CRM систему Заказчика.
Для этих целей мы разработали информационную модель содержащую все необходимые данные как для создания собственных курсов, так импорта курсов из других систем в формате SCORM 1.2. На основании подготовленной информационной модели были созданы:











Валентин
LMS на битриксе работает у нас уже год. Конверсия в завершение курсов выросла, но пользователи всё ещё жалуются, что “слишком много кликов” между уроками. Какой минимальный путь пользователя можно оставить, чтобы и контент не потерять, и людей не отпугнуть? И как в Битриксе быстро протестировать, что будет, если упростить навигацию?
Студия Фонарь
Здравствуйте! Минимальный путь: 1) список уроков в одном блоке с индикатором прогресса; 2) кнопка “Продолжить” сразу ведёт к следующему уроку (без лишних экранов); 3) навигация “Назад/Вперёд” прямо на странице урока. Для теста делаем A/B: на 20–30 % трафика — упрощённая версия, смотрим конверсию в завершение урока и среднее время на странице. В битриксе для A/B достаточно флага в настройках компонента и двух шаблонов. Если скажете, какая навигация у вас сейчас и что хотите упростить (меню, хлебные крошки, кнопки), покажем, как быстро развернуть тест и какие метрики смотреть, чтобы принять финальное решение.
Екатерина
Хотим сделать “семейный доступ”: один оплаченный курс могут пройти несколько членов семьи. Как в Битриксе реализовать выдачу доступа по промокоду и ограничить количество активаций?
Студия Фонарь
Здравствуйте! Промокоды — это удобно. В инфоблоке “Промокоды” храним код, лимит активаций, текущий счётчик. При вводе проверяем: если лимит не исчерпан — создаём запись в “Прохождениях” для пользователя и увеличиваем счётчик. Чтобы не было дублей, проверяем, не активировал ли уже этот пользователь код. В битриксе логику оформляем в отдельном компоненте “Активация промокода”. Если скажете, нужны ли сроки действия и привязка к конкретным курсам, покажем, какие поля добавить и как защитить от перебора кодов.
Дарья Алексеевна
Мы хотим делать “микрообучение”: короткие карточки с фактами, которые можно проходить за 2–3 минуты. Как в Битриксе оформить такой контент, чтобы он не выглядел как обычный лонгрид?
Студия Фонарь
Здравствуйте! Микрообучение требует отдельного формата. В инфоблоке “Уроки” добавляем тип “карточка” и в шаблоне выводим не статью, а сетку карточек с заголовком, фактом и кнопкой “Далее”. Чтобы не смешивать с обычными уроками, делаем отдельный вид компонента “Микроуроки”. В CMS это удобно реализовать через свойства типа “HTML/текст” и CSS-сетку. Если скажете, сколько фактов обычно в карточке и какой экран у пользователей (мобильный/десктоп), покажем, как сверстать и не усложнить шаблон.
Татьяна
У нас высокая нагрузка, и я боюсь, что подсчёт прогресса и рейтингов будет тормозить сайт. Как в Битриксе грамотно кэшировать такие данные и обновлять их без задержек?
Студия Фонарь
Здравствуйте! Прогресс и рейтинги считаем один раз (агентом или при событии) и сохраняем в отдельное поле или инфоблок. На фронтенде выводим из кэша. Пересчёт делаем по событию (сдал тест) и/или по расписанию (раз в час). Чтобы не было рассинхрона, кэшируем с коротким TTL (5–15 минут) и при необходимости форсируем обновление. В CMS кэш настраиваем через $APPLICATION IncludeComponent с параметром CACHE_TYPE. Если скажете пример нагрузки и какие метрики критичны (прогресс, баллы, рейтинг), покажем, где поставить кэш и как логировать ошибки.
Татьяна
Ничего не понятно... Программисту отправлю
Юлия Константиновна
Хочется сделать “рекомендацию курса” на основе пройденных уроков: если пользователь прошёл А и Б, ему показываем В. Как в Битриксе технически реализовать такую логику, чтобы она не зависела от жёстко прописанных правил?
Студия Фонарь
Здравствуйте, Юлия Константиновна! Вы уже написали рекомендательную логику. В простом варианте делаем таблицу маппинга: “если пройдено X и Y, рекомендовать Z”. Храним её в инфоблоке или JSON-файле, чтобы править без кода. В шаблоне личного кабинета проверяем, какие курсы завершены, и показываем подходящие рекомендации. В битрикс для скорости кэшируем рекомендации для каждого пользователя. Если скажете, сколько курсов и как часто они обновляются, покажем, как сделать гибкую схему и не усложнять код.
Антон
Можно ли сделать в lms на битриксе “календарь обучения”: список назначенных курсов и дедлайнов, чтобы сотрудник видел, что нужно пройти до пятницы? И чтобы это работало с кэшем и не грузило страницу?
Студия Фонарь
Здравствуйте! Реализуем через отдельный инфоблок “Дедлайны” с полями: курс, пользователь, дата, статус. На странице выводим список, а тяжёлые расчёты (осталось дней, просрочка) делаем в php и кэшируем. Чтобы не ломать кэш, логику проверки дедлайнов выносим в ajax: страница из кэша, а статусы подгружаются отдельно. Если скажете, как у вас устроены роли (сотрудник, менеджер, админ), покажем, какие права поставить и как оформить вывод, чтобы всё было быстро и понятно.
Кирилл
Хочется, чтобы после каждого урока был короткий тест из 3–5 вопросов, и чтобы правильные ответы подсвечивались, а неправильные — нет. Можно ли это сделать в битриксе без сложной разработки?
Студия Фонарь
Здравствуйте! Да, это вполне типовая задача. В инфоблоке “Тесты” храним вопросы и варианты, отмечаем правильный вариант. В шаблоне урока выводим тест, при отправке ajax сверяет ответы с правильными и возвращает результат. Подсветку делаем на фронтенде, но решение принимаем только по серверному ответу. В битриксе удобно вынести логику в отдельный компонент “Тест к уроку” и подключать его в template.php. Если скажете, нужен ли учёт попыток и ограничение по времени, покажем, как добавить эти поля и не усложнить UX.
Ольга К.
Боимся, что если хранить все видео прямо в битриксе, сайт будет тормозить и место быстро закончится. Есть ли нормальная схема интеграции с внешним хранилищем, но чтобы в CMS всё выглядело как “своё”?
Студия Фонарь
Здравствуйте, Ольга! Видео лучше хранить вне Битрикса. Схема: файлы — в S3-совместимом хранилище или CDN, в инфоблоке “Уроки” храним только ссылку и метаданные (название, длительность, формат). Плеер на сайте берёт ссылку из поля. В битрикс важно: не менять логику вывода, только источник файла. Если скажете, какое хранилище планируете (Яндекс Диск, S3, Vimeo), покажем, как оформить поля и как сделать проверку доступности видео, чтобы не показывать битые ссылки.
Дмитрий Сергеевич
У нас B2B: обучение для сотрудников клиентов. Хочется, чтобы администратор мог выдавать доступ к курсам вручную: выбрал пользователя — назначил курс. И чтобы в личном кабинете у пользователя сразу появлялся этот курс. Как это реализовать в битриксе?
Студия Фонарь
Здравствуйте!Такая модель отлично ложится на инфоблок “Прохождения”: администратор создаёт элемент с привязкой к пользователю и курсу, ставит статус “назначен”. В личном кабинете показываем только те курсы, на которые есть запись в этом инфоблоке. Чтобы не усложнять, делаем отдельный компонент “Назначение курсов” в админке с поиском по пользователям и мультивыбором курсов. Если скажете, сколько обычно пользователей и курсов, подскажем, как оптимизировать выборку и не тормозить админку при больших списках.
Ирина Юрьевна
Здравствуйте. Мы хотим выдавать сертификаты после курса. Как в Битриксе сделать генерацию PDF-сертификата с именем и датой, чтобы он сразу скачивался после финального теста?