Создание своей темы Moodle (theme_cdto)
Проект: DENKART, lms.cdto.life (Moodle 4.5)
Дата: 2026-02-12
1. Что уже сделано
В репозитории создана заготовка темы CDTO — дочерняя тема Boost (Bootstrap 5):
| Путь в репозитории | Назначение |
|---|---|
| theme-cdto/ | Исходники темы (код хранится в Git) |
| theme-cdto/config.php | Родитель Boost, callback'и SCSS |
| theme-cdto/version.php | Версия плагина, зависимость от theme_boost |
| theme-cdto/lang/en/theme_cdto.php | Строки локализации |
| theme-cdto/settings.php | Настройки в админке: цвет бренда, Raw SCSS (pre/post) |
| theme-cdto/lib.php | Функции для SCSS (pre, main, extra) |
| theme-cdto/scss/pre.scss | Переменные и переопределения до основного SCSS |
| theme-cdto/scss/post.scss | Стили после основного SCSS (ваши правки) |
| theme-cdto/pix/ | Изображения темы (логотип, иконки) |
Подробнее о структуре и инструментах: moodle-theme-development-tool-selection.md, lms-front-page-theme-and-tasks.md.
2. Установка темы в Moodle (контейнер moodle)
Тема должна находиться в каталоге /var/www/moodle/theme/cdto внутри контейнера.
2.1 Копирование из репозитория на хост
На хосте (где расположен репозиторий DENKART):
# Вариант A: копирование в rootfs контейнера (путь зависит от установки LXD)
sudo cp -r /home/cdto/DENKART/theme-cdto /var/lib/lxd/containers/moodle/rootfs/var/www/moodle/theme/cdto
# Вариант B: через lxc file (создайте каталог, если его нет)
lxc exec moodle -- mkdir -p /var/www/moodle/theme/cdto
lxc file push -r /home/cdto/DENKART/theme-cdto/. moodle/var/www/moodle/theme/cdto/
Если контейнер монтирует каталог хоста (bind mount), копируйте в соответствующий путь на хосте, откуда монтируется /var/www/moodle.
2.2 Права и владелец
В контейнере Moodle файлы должны принадлежать пользователю веб-сервера (обычно www-data):
lxc exec moodle -- bash -c 'chown -R www-data:www-data /var/www/moodle/theme/cdto'
2.3 Регистрация темы в Moodle
- Войдите в Moodle как администратор: https://lms.cdto.life
- Откройте Уведомления (или Site administration → Notifications).
- Moodle обнаружит новую тему и предложит обновить БД — подтвердите.
Либо выполните в контейнере:
sudo -u www-data php /var/www/moodle/admin/cli/upgrade.php(если нужен неинтерактивный вариант).
2.4 Выбор темы по умолчанию
- Управление сайтом → Внешний вид → Темы → Выбор темы по умолчанию
или: https://lms.cdto.life/admin/settings.php?section=themesettings - Выберите CDTO в списке и сохраните.
- При необходимости очистите кэш:
lxc exec moodle -- sudo -u www-data php /var/www/moodle/admin/cli/purge_caches.php
После этого сайт будет отображаться в теме CDTO (визуально как Boost, пока не добавлены свои правки).
3. Дальнейшая кастомизация
- Цвет и SCSS: в админке Управление сайтом → Внешний вид → Настройки темы → CDTO — задайте цвет бренда и при необходимости Raw initial SCSS / Raw SCSS.
- Код темы: правьте файлы в theme-cdto/ в репозитории (например в Cursor), затем снова копируйте в контейнер и при необходимости выполняйте purge caches.
- Шаблоны: переопределение Mustache из Boost — в theme-cdto/templates/ (скопируйте нужный шаблон из theme/boost/templates/ и измените).
- Логотип: положите файл в theme-cdto/pix/ и при необходимости настройте в настройках темы или в шаблоне.
Связь с этапом 2 плана главной страницы (внешний вид): lms-main-page-development-plan.md.
4. Скрипт автоматического деплоя
Скрипт scripts/deploy-moodle-theme-cdto.sh копирует тему из репозитория в контейнер и выставляет владельца www-data:
cd /home/cdto/DENKART/scripts
sudo ./deploy-moodle-theme-cdto.sh
Опции:
--purge-caches— после деплоя выполнить очистку кэша Moodle (purge_caches.php).- Переменная окружения
MOODLE_CONTAINER— имя контейнера (по умолчаниюmoodle).
Пример с очисткой кэша:
sudo ./deploy-moodle-theme-cdto.sh --purge-caches
Технический директор: AI Denkart
Владелец ресурсов: CDTO Dkvark