Пример дочерней темы «Пекарня»
Рабочая тема к руководству «Темы». Она берёт всё у стандартной темы «Старт» и меняет только нужное:
| Что | Где |
|---|---|
| описание темы и родительская тема | theme.json ("parent": "starter") |
| цвета и шрифты поверх «Старта» | assets/css/style.css — подключается после стилей «Старта» |
| свой блок в боковой колонке через событие темы | functions.php → starter_sidebar, шаблон partials/hours.blade.php |
| фильтр: длина отрывков | functions.php → excerpt_length |
| свой шаблон страницы 404 | 404.blade.php |
Как попробовать
Скопируйте папку pekarnya в themes/ (или запакуйте в zip и загрузите в «Внешний вид → Темы → Добавить тему»)
и активируйте тему «Пекарня». Тема «Старт» должна оставаться установленной — дочерняя берёт у неё шаблоны.
Файлы примера
theme.json
{
"name": "Пекарня",
"description": "Пример дочерней темы из документации: тёплые цвета, свои часы работы в боковой колонке и своя страница 404.",
"version": "1.0.0",
"author": "CMS ARGELIT",
"parent": "starter",
"requires_cms": "0.13"
}
functions.php
<?php
/*
* functions.php темы «Пекарня». Подключается после functions.php «Старта».
* Функции здесь не объявляем (файл может подключаться повторно) — только подписки на события и фильтры.
*/
// «Часы работы» внизу боковой колонки: «Старт» вызывает здесь событие «starter_sidebar».
add_action('starter_sidebar', function () {
echo view('theme::partials.hours', [
'hours' => ['Пн–Пт' => '7:00–20:00', 'Сб–Вс' => '8:00–18:00'],
])->render();
});
// Короче отрывки записей в ленте: 25 слов вместо стандартных.
add_filter('excerpt_length', fn () => 25);
404.blade.php
{{-- Своя страница «не найдено». Остальные шаблоны тема берёт у «Старта». --}}
@extends('theme::layout')
@section('content')
<div class="container container--narrow">
<main class="site-main error-404">
<p class="error-404__code" aria-hidden="true">404</p>
<h1 class="page-title">Эту булочку уже разобрали</h1>
<p>Страницы с таким адресом нет. Загляните на главную — там свежая выпечка.</p>
<p><a href="{{ home_url() }}" class="button">На главную</a></p>
</main>
</div>
@endsection
assets/css/style.css
/*
* Тема «Пекарня» — дочерняя тема «Старта».
* Этот файл подключается ПОСЛЕ стилей «Старта», поэтому достаточно поменять переменные и пару правил.
*/
:root {
--accent: #b45309;
--accent-hover: #92400e;
--accent-soft: #fef3c7;
--surface: #fffbeb;
--radius: 18px;
}
h1,
h2,
h3,
.site-title {
font-family: Georgia, "Times New Roman", serif;
}
.bakery-hours {
padding: 16px 20px;
border-radius: var(--radius);
background: var(--accent-soft);
}
.bakery-hours dl {
display: grid;
grid-template-columns: auto 1fr;
gap: 4px 12px;
margin: 0;
}
.bakery-hours dd {
margin: 0;
}
partials/hours.blade.php
{{-- Часы работы в боковой колонке (выводится из functions.php). Переменная: $hours — «дни => время». --}}
<section class="widget bakery-hours">
<h2 class="widget__title">Часы работы</h2>
<dl>
@foreach ($hours as $days => $time)
<dt>{{ $days }}</dt>
<dd>{{ $time }}</dd>
@endforeach
</dl>
</section>