> ## Documentation Index
> Fetch the complete documentation index at: https://faq.exode.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Создание уроков и модулей

> Как устроена структура курса, как добавлять модули и уроки и менять их порядок

Структура курса в Exode строится из двух сущностей: **модулей** и **уроков**. Обе описываются
одной моделью урока (`CourseLessonEntity`), а различает их наличие «родителя»: урок внутри модуля
ссылается на модуль через поле `parent`, а сам модуль родителя не имеет.

## Структура курса

Содержание курса — это дерево из двух уровней:

* **Модуль** — раздел верхнего уровня. Группирует уроки и задаёт логические этапы курса.
* **Урок** — единица обучения внутри модуля: теория (контент-блоки) и/или практика.

<Note>
  Модуль может быть как обычной «папкой» с уроками, так и **модулем с содержанием** — то есть иметь
  собственные контент-блоки и практику, как урок. Режим переключается тумблером «Модуль с содержанием»
  в настройках модуля (поле `withContent`). У обычного урока внутри модуля этого переключателя нет.
</Note>

Работа со структурой ведётся на странице **Содержание курса**
(`/manage/course/:courseId/content`).

<img src="https://mintlify.s3.us-west-1.amazonaws.com/exode-faq/images/online-schools/lessons-modules/content-tree.png" alt="Страница «Содержание курса» со списком модулей и уроков" />

## Добавление модуля и урока

<Steps>
  <Step title="Откройте раздел «Содержание»">
    Перейдите в управление курсом и откройте вкладку **Содержание**. Для обычного курса здесь
    отображается список модулей и вложенных уроков, для курса-бандла — список входящих курсов.
  </Step>

  <Step title="Добавьте модуль">
    Нажмите **Добавить модуль** в шапке списка. Модуль создаётся сразу и появляется в конце списка.
    Кнопка доступна в блоке действий модуля (элемент `addModule`).
  </Step>

  <Step title="Добавьте урок в модуль">
    Внутри модуля нажмите **Добавить урок** (элемент `addLesson`). Можно сразу указать название
    нового урока в поле ввода — при подтверждении по Enter урок создаётся с этим именем. Если
    название не введено, урок создаётся с именем по умолчанию, а переименовать его можно позже
    в настройках.
  </Step>

  <Step title="Наполните урок">
    Откройте созданный урок, чтобы добавить контент-блоки (теорию) и практические задания. Подробнее —
    в разделах [Содержание урока](/online-schools/lessons-modules/content) и
    [Практика](/online-schools/lessons-modules/practice).
  </Step>
</Steps>

<Tip>
  Название урока можно ввести прямо при создании — так быстрее собирать структуру целыми списками,
  не открывая каждый урок по отдельности.
</Tip>

## Порядок модулей и уроков

Каждый элемент структуры имеет поле `order`, определяющее его позицию. Порядок задаётся
перетаскиванием элементов в списке содержания:

* модули упорядочиваются между собой;
* уроки упорядочиваются внутри своего модуля;
* урок можно перенести в другой модуль, сменив его родителя.

Порядок влияет и на отображение курса студенту, и на логику **последовательного открытия** уроков
(см. [Настройка урока и модуля](/online-schools/lessons-modules/settings)).

## Статус и доступ урока

У каждого урока есть два независимых свойства, задаваемых на странице содержания и в настройках урока:

| Свойство                   | Значения                                                               | Назначение                         |
| -------------------------- | ---------------------------------------------------------------------- | ---------------------------------- |
| Статус (`status`)          | `Draft` (черновик), `OnCheck` (на проверке), `Published` (опубликован) | Виден ли урок студентам            |
| Тип доступа (`accessType`) | `Participant` (по записи), `Demo` (демо)                               | Нужна ли оплата/запись для доступа |

<Warning>
  Пока урок находится в статусе «Черновик», он не виден студентам. Не забудьте перевести урок в
  статус «Опубликован» после наполнения.
</Warning>
