Skip to content
  1. Компоненты
  2. MigxPageConfigurator
  3. Темизация

Темизация

Тема — это сменный слой вёрстки. Она позволяет показать одни и те же данные сайта в разном оформлении: меняется только HTML-вёрстка секций, а контент (значения полей, переводы, картинки) остаётся прежним.

Удобно, когда нужно:

  • держать несколько вариантов дизайна и переключать их (например, обычный и праздничный);
  • сделать отдельное оформление для части страниц (для одного шаблона — своя тема);
  • собрать новую вёрстку, не ломая текущую: пока тема не включена, сайт работает на базовой вёрстке.

Главное

Тема меняет только вёрстку. Контент (mpc_config, лексиконы, медиа) общий для всех тем — его не нужно дублировать и перезаполнять.

Как это устроено

Тема — это подпапка-«зеркало» внутри папки секций. Когда компонент собирает страницу, для каждой секции он сначала ищет её файл в папке темы:

sections/<папка-тем>/<тема>/<секция>.tpl
  • файл нашёлся → берётся вёрстка из темы;
  • файла нет → берётся базовая вёрстка (sections/<секция>.tpl).

То есть тема перекрывает только те секции, для которых у неё есть свой файл. Всё остальное автоматически показывается в базовом виде — можно темизировать хоть одну секцию, хоть все.

Папка с темами задаётся настройкой mpc_themes_subdir (по умолчанию _themes/) и лежит внутри папки секций (mpc_path_to_sections).

Включить тему

Тему можно включить двумя способами.

Через системные настройки

  • mpc_theme — имя активной темы на весь сайт. Пусто → базовая вёрстка.
  • mpc_theme_templates — тема для отдельных шаблонов, JSON вида {"5":"dark","12":"summer"} (ключ — id шаблона, значение — имя темы). Это переопределение приоритетнее mpc_theme: если шаблон страницы есть в этом списке, берётся его тема, иначе — общая.

После смены темы в админке кэш готовых страниц (parsed/) сбрасывается автоматически.

Через консоль (CLI)

sh
# включить тему bento на весь сайт
./console/mpc theme set bento

# включить тему только для шаблона с id 12
./console/mpc theme set bento --template=12

# выключить тему (вернуть базовую вёрстку)
./console/mpc theme clear

# выключить тему только для шаблона 12
./console/mpc theme clear --template=12

# посмотреть, какая тема активна сейчас
./console/mpc theme status

Команды set и clear сами чистят кэш parsed/, поэтому изменения видны сразу.

Создать тему

Вёрстка темы режется тем же механизмом нарезки, что и обычная, — только с флагом --theme.

  1. Сложите размеченную вёрстку темы в подпапку исходников:

    templates/<папка-тем>/<тема>/

    Размечается она так же, как обычные шаблоны (data-mpc-section, data-mpc-field и т.д. — см. Разметку вёрстки). По сути это другой HTML тех же секций.

  2. Нарежьте её с указанием темы:

    sh
    ./console/mpc cut services.tpl --theme=bento

    Результат уйдёт в sections/<папка-тем>/bento/.

В режиме --theme нарезка делает только одно — раскладывает вёрстку темы по файлам секций. Перенос данных в админку и запекание страниц при этом не выполняются: контент общий для всех тем, заводить его заново не нужно.

Имя темы

Имя темы — это имя папки. Не используйте в нём /, \ и ... Если тема указана с такими символами или её папки нет, компонент молча покажет базовую вёрстку.

Что тема НЕ меняет

  • Контент — значения полей секций (mpc_config), переводы (лексиконы), загруженные медиа. Всё это общее: переключение темы их не затрагивает.
  • Структуру данных — список секций, поля, типы. Тема меняет только то, как секция выглядит в HTML.

Поэтому переключение между темами безопасно: вы всегда можете вернуться к базовой вёрстке (theme clear), не потеряв ни строчки контента.