Модули и темы
Что такое расширение, где оно лежит и что умеет
Расширение — папка в modules/ или themes/ в корне установки. Ядро находит её само, править код CMS не нужно. Модуль добавляет функциональность: свои таблицы, страницы, права, обработчики событий. Тема меняет внешний вид сайта или панели.
Чем модуль отличается от темы
| Модуль | Тема | |
|---|---|---|
| Зачем | Новая функциональность | Новая вёрстка |
| Серверная часть | Есть: контроллеры, сущности, задачи | Нет |
| Сколько работает сразу | Сколько угодно | Одна на сайт и одна на панель |
| Свои страницы | Только внутри /mod/<id> | Любые, в том числе вместо страниц ядра |
Тема — не цветовая схема. Светлая и тёмная схемы есть в ядре и к темам отношения не имеют: тема подменяет разметку, компоненты и палитру PrimeVue целиком.
Граница с ядром
Расширение общается с ядром только через пакет unicore-api. Прямых импортов из кода сервера нет и быть не может: ядро поставляется собранным и обфусцированным, исходников сервера в поставке нет.
import { defineModule, Public, Permissions, CurrentUser, core } from 'unicore-api/server'У контракта своя версия, отдельная от версии CMS. Модуль объявляет диапазон в поле unicoreApi, несовместимый модуль не загружается, а причина видна в админке.
Спрашивайте возможность, а не версию
capabilities().has('payments.credit') отвечает, умеет ли ядро конкретную вещь. Список возможностей растёт вместе с контрактом, поэтому проверка возможности переживает обновления лучше, чем сравнение номеров версий.
Готовые модули
Модули живут в отдельном репозитории — MCXTeam/UnicoreCMS-modules.
| Модуль | Что делает |
|---|---|
| Формы | Формы на сайте: заявки в команду, разбан, жалобы, баг-репорты, обратная связь |
| Команда проекта | Страница состава из служебных ролей и привилегий |
| Демо-модуль | Контракт целиком: таблица, права, настройки, события, канал вебхука, слоты |
Модули лежат там исходниками: серверную часть перед установкой нужно собрать. Как — написано в README репозитория, там же настройки и права каждого модуля.
Готовые темы
Темы живут в отдельном репозитории — MCXTeam/UnicoreCMS-themes.
| Тема | Сторона | Что показывает |
|---|---|---|
| Аврора | Сайт | Своя палитра, своя главная, свой компонент и строки |
| Нуар | Сайт | Вторая тема сайта: подменяет главную и страницу доната |
| Графит | Панель | Preset PrimeVue и его палитра, подмена дашборда |
Тему собирать не нужно — она состоит из исходников, которые собираются вместе с фронтом. Эти три темы учебные: они показывают механику слоя и годятся как заготовка для своей.
Куда смотреть дальше
- Установка — из архива и руками, включение и удаление
- Как написать модуль — манифест, сервер, настройки, локали
- Модуль «Команда проекта» — готовый пример: страница состава без ручного заполнения
- Встраивание в интерфейс — меню, вкладки, слоты
- Темы — слой вёрстки, подмена страниц, палитра
- Контракт unicore-api — фасады ядра и события
- Границы — что ломает загрузку и сборку