Структура темы
Тема — это набор файлов, определяющих внешний вид сайта: стили (SCSS), шаблоны (Blade), скрипты (JS). Темы располагаются в папке app/Themes/.
Полная структура
- theme.json
- colors.json
- app.scss
Минимальная тема
Если нужно только изменить цвета, достаточно минимального набора файлов:
- theme.json
- _variables.scss
Всё остальное автоматически берётся из standard благодаря наследованию.
Конфигурация theme.json
Базовая конфигурация
{
"name": "My Theme",
"version": "1.0.0",
"author": "Your Name",
"description": "Описание темы",
"extends": "standard"
}Расширенная конфигурация
{
"name": "My Theme",
"version": "1.0.0",
"author": "Your Name",
"description": "Тема с кастомизацией",
"extends": "standard",
"settings": {
"show_sidebar": {
"name": "Показывать сайдбар",
"description": "Включить боковую панель",
"value": true
}
},
"layout_arguments": {
"containerWidth": "1400px"
},
"replacements": {
"shop::pages.catalog": "mytheme::shop.catalog"
}
}Параметры theme.json
| Параметр | Описание |
|---|---|
name | Отображаемое имя темы |
version | Версия (semver) |
author | Автор |
description | Описание |
extends | Родительская тема для наследования |
settings | Настройки, доступные в админке |
layout_arguments | Переменные, доступные во всех шаблонах |
replacements | Замена шаблонов модулей |
Подключение SCSS и JS
SCSS
Главный файл assets/sass/app.scss автоматически компилируется и подключается. Используйте директиву @at для подключения в шаблонах:
@at(tt('assets/sass/app.scss'))Функция tt() возвращает путь к текущей теме.
JavaScript
Файл assets/scripts/app.js подключается автоматически:
@at(tt('assets/scripts/app.js'))На конкретной странице
@push('styles')
@at('Modules/Shop/Resources/assets/scss/shop.scss')
@endpush
@push('scripts')
@at('Modules/Shop/Resources/assets/js/shop.js')
@endpushЧто можно переопределять
| Что изменить | Какой файл создать |
|---|---|
| Цвета и переменные | assets/sass/theme/_variables.scss |
| Любой компонент | views/components/{name}.blade.php |
| Header | views/layouts/header.blade.php |
| Footer | views/layouts/footer.blade.php |
| Весь макет | views/layouts/app.blade.php |
| Стили кнопок | assets/sass/components/_buttons.scss |
| Стили любого элемента | assets/sass/app.scss |
| JavaScript | assets/scripts/app.js |
При переопределении файла система сначала ищет его в вашей теме, затем в родительской, и только потом в стандартной теме.
Файл colors.json
Опциональный файл для редактора страниц в админке:
{
"light": {
"--background": "#ffffff",
"--secondary": "#f8fafc",
"--accent": "#007aff",
"--text": "#1a1a2e"
},
"dark": {
"--background": "#121212",
"--secondary": "#1e1e1e",
"--accent": "#0a84ff",
"--text": "#e0e0e0"
}
}Отладка
После изменений в теме может потребоваться очистка кеша:
php flute template:cache:clear
php flute cache:clearВ режиме разработки SCSS перекомпилируется автоматически при изменении файлов.