Создание своей темы 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

  1. Войдите в Moodle как администратор: https://lms.cdto.life
  2. Откройте Уведомления (или Site administrationNotifications).
  3. Moodle обнаружит новую тему и предложит обновить БД — подтвердите.
    Либо выполните в контейнере:
    sudo -u www-data php /var/www/moodle/admin/cli/upgrade.php (если нужен неинтерактивный вариант).

2.4 Выбор темы по умолчанию

  1. Управление сайтомВнешний видТемыВыбор темы по умолчанию
    или: https://lms.cdto.life/admin/settings.php?section=themesettings
  2. Выберите CDTO в списке и сохраните.
  3. При необходимости очистите кэш:
    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