Разработка сайта языковой школы на 1С-Битрикс
Языковая школа продаёт не товар, а результат: «заговорить на английском через 3 месяца». Сайт должен не просто перечислять курсы, а помочь потенциальному ученику определить свой уровень, подобрать группу и записаться — без звонка. На 1С-Битрикс это реализуется через инфоблоки с многомерной фильтрацией, кастомный компонент тестирования и интеграцию с платформами онлайн-обучения.
Каталог курсов: трёхмерная структура
Главная сложность каталога языковой школы — три оси фильтрации: язык, уровень, формат. Ученику нужно быстро найти «Английский, B1, групповой, вечернее время».
Инфоблок «Курсы» содержит разделы первого уровня по языкам (английский, немецкий, французский, испанский, китайский), второго уровня — по направлениям (General, Business, Exam Prep, Conversational). Свойства элемента:
- Уровень (список с множественным выбором): A1, A2, B1, B2, C1, C2 по CEFR
- Формат (список): групповой, мини-группа (3-5 чел.), индивидуальный, онлайн-группа, онлайн-индивидуальный
- Интенсивность (список): стандарт (2 раза/нед.), интенсив (4-5 раз/нед.), выходного дня
- Длительность (число): количество академических часов
- Возрастная группа (список): дети 7-10, подростки 11-15, взрослые 16+
- Результат (текст): что ученик сможет делать после курса
Фильтрация реализуется через bitrix:catalog.smart.filter с AJAX. Три выпадающих списка (язык → уровень → формат) работают каскадно: при выборе языка подгружаются только доступные уровни.
Онлайн-запись с подбором группы
Highload-блок «Группы» аналогичен по структуре каталогу автошколы, но с дополнениями:
- UF_TEACHER_ID — привязка к инфоблоку «Преподаватели»
- UF_LEVEL — уровень группы
- UF_WEEKDAYS — дни занятий (битовая маска: ПН=1, ВТ=2, СР=4...)
- UF_TIME_START — время начала занятия
- UF_CLASSROOM — аудитория / ссылка на Zoom
Форма записи подсказывает подходящие группы на основании результата теста уровня. Если тест пройден и результат сохранён в профиле — поле «Уровень» заполняется автоматически, ученику остаётся выбрать удобное расписание.
Интеграция с LMS и Zoom
Для онлайн-формата необходима связка с LMS (Moodle, iSpring) и Zoom/Google Meet. Интеграция работает через REST API:
- При создании группы с форматом «онлайн» автоматически создаётся повторяющаяся встреча в Zoom через API и ссылка записывается в свойство группы
- Доступ к ссылке открывается в личном кабинете только записанным ученикам после оплаты
- Материалы урока (презентации, аудио, домашние задания) хранятся в инфоблоке «Материалы» с привязкой к курсу и уроку
Личный кабинет ученика
Кабинет построен на кастомном шаблоне bitrix:main.profile с вкладками:
- Мои курсы — активные, завершённые, предстоящие
- Расписание — календарный вид с цветовой кодировкой по языкам
- Домашние задания — список с дедлайнами и статусами (новое / сдано / проверено)
-
Оплата — история платежей, задолженности, ссылка на онлайн-оплату через модуль
sale - Результаты тестов — динамика уровня, рекомендации по переходу на следующий
Тест определения уровня: deep-dive
Тест уровня — критическая точка воронки. Посетитель приходит с запросом «хочу учить английский», но не знает свой уровень. Если предложить позвонить — конверсия падает. Если дать пройти тест за 15 минут и сразу показать подходящие группы — записывается.
Архитектура теста
Инфоблок «Вопросы тестирования» с разделами по языкам. Каждый язык содержит подразделы по уровням (A1–C2). Свойства вопроса:
- Тип (список): grammar, vocabulary, reading, listening
- Уровень (список): A1–C2 — реальный уровень вопроса
- Текст вопроса — детальное описание
- Медиа — аудиофайл для listening-вопросов
- Варианты ответов — 3-4 строковых свойства
- Правильный ответ — номер варианта
- Вес — числовое значение для алгоритма подсчёта
Адаптивный алгоритм
Стандартный подход «50 вопросов от A1 до C2 по порядку» — долго и скучно. Реализуем адаптивный алгоритм (упрощённый CAT — Computerized Adaptive Testing):
- Тест начинается с 5 вопросов уровня B1 (медианный уровень)
- Если ученик отвечает правильно на 4-5 из 5 — следующий блок берётся на уровень выше (B2)
- Если правильных менее 2 — на уровень ниже (A2)
- Если 2-3 — ещё 5 вопросов того же уровня для уточнения
- Тест завершается, когда алгоритм определил стабильный уровень (два последовательных блока с результатом 60-80%) или пройдено максимум 30 вопросов
Серверная часть — контроллер D7 (/api/placement-test/). Клиент отправляет ответ на текущий вопрос, сервер определяет следующий вопрос на основании накопленной статистики. Номера правильных ответов клиенту не передаются. Состояние теста хранится в $_SESSION с резервным сохранением в Highload-блок (на случай закрытия вкладки — тест можно продолжить).
Маршрутизация результата
После завершения теста контроллер:
- Определяет итоговый уровень по формуле взвешенного среднего (вопросы типа grammar имеют вес 1.0, vocabulary — 0.8, reading — 1.2)
- Сохраняет результат в профиле пользователя (свойство
UF_LANGUAGE_LEVEL_{LANG}) - Делает выборку из Highload-блока «Группы» с фильтром по языку, уровню и статусу «Набор открыт»
- Возвращает страницу результата с блоками:
- Определённый уровень с описанием («B1 — Intermediate: вы понимаете основные идеи текстов, можете общаться в большинстве ситуаций в путешествии...»)
- Рекомендуемые курсы — карточки из инфоблока с фильтром по уровню
- Ближайшие группы — конкретные даты начала, расписание, преподаватель
- Кнопка записи — ведёт на форму с предзаполненными полями (язык, уровень)
Для неавторизованных пользователей результат сохраняется в cookie на 30 дней. При регистрации данные переносятся в профиль.
Повторное тестирование
Ученикам, прошедшим курс, предлагается пройти тест повторно через 3 месяца. Триггер — автоматическое email-уведомление через sale.personal.section и бизнес-процесс. Сравнение «до и после» отображается в личном кабинете как прогресс-бар с двумя отметками.
Акции и реферальная программа
Инфоблок «Акции» с датами действия (ACTIVE_FROM, ACTIVE_TO) и типами:
-
Приведи друга — реферальная ссылка генерируется в ЛК, при записи нового ученика по ссылке оба получают скидку (купоны модуля
sale) - Корпоративное обучение — отдельная посадочная с формой заявки, расчёт от количества сотрудников
- Сезонные — летний интенсив, подготовка к IELTS перед дедлайнами
Корпоративные заявки обрабатываются отдельно: данные попадают в CRM Битрикс24 через REST API webhook.
Этапы и сроки
| Этап | Что делаем | Срок |
|---|---|---|
| Аналитика | Карта курсов, матрица «язык × уровень × формат», требования к тесту | 5–7 дней |
| Проектирование | Wireframes, структура инфоблоков, алгоритм адаптивного теста | 7–10 дней |
| Дизайн | Макеты, UI-kit, адаптив под мобильные | 10–14 дней |
| Разработка каталога | Инфоблоки, фильтрация, карточки курсов, страницы групп | 10–14 дней |
| Тест определения уровня | Компонент, адаптивный алгоритм, страница результата | 10–12 дней |
| Личный кабинет и интеграции | ЛК ученика, Zoom API, оплата | 10–14 дней |
| Контент и тестирование | Наполнение базы вопросов, QA | 7–10 дней |
Общий срок — 9–12 недель. Наполнение базы вопросов для теста (минимум 120 вопросов на язык, по 20 на уровень) может идти параллельно с разработкой.







