Темизация
Тема — это сменный слой вёрстки. Она позволяет показать одни и те же данные сайта в разном оформлении: меняется только 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)
# включить тему 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.
Сложите размеченную вёрстку темы в подпапку исходников:
templates/<папка-тем>/<тема>/Размечается она так же, как обычные шаблоны (
data-mpc-section,data-mpc-fieldи т.д. — см. Разметку вёрстки). По сути это другой HTML тех же секций.Нарежьте её с указанием темы:
sh./console/mpc cut services.tpl --theme=bentoРезультат уйдёт в
sections/<папка-тем>/bento/.
В режиме --theme нарезка делает только одно — раскладывает вёрстку темы по файлам секций. Перенос данных в админку и запекание страниц при этом не выполняются: контент общий для всех тем, заводить его заново не нужно.
Имя темы
Имя темы — это имя папки. Не используйте в нём /, \ и ... Если тема указана с такими символами или её папки нет, компонент молча покажет базовую вёрстку.
Что тема НЕ меняет
- Контент — значения полей секций (
mpc_config), переводы (лексиконы), загруженные медиа. Всё это общее: переключение темы их не затрагивает. - Структуру данных — список секций, поля, типы. Тема меняет только то, как секция выглядит в HTML.
Поэтому переключение между темами безопасно: вы всегда можете вернуться к базовой вёрстке (theme clear), не потеряв ни строчки контента.
