Композиция: сайт → раздел → страница
Сайт задаёт бренд и тему, раздел заменяет sidebar и отключает aside, а страница сбрасывает aside и включает footer.
Результат
Исходные файлы
# Композиция: сайт → раздел → страница
Сайт задаёт бренд и тему, раздел заменяет sidebar и отключает aside, а страница
сбрасывает aside и включает footer.
## Результат
[Открыть отдельно](/ru/demonstrator-results/composition-inheritance/page/)
:::internal_preview {size=tall title="Композиция сайта, раздела и страницы"}
[Открыть результат](/ru/demonstrator-results/composition-inheritance/page/)
:::
## Исходные файлы
:::code {src="./composition-inheritance.md" lang=markdown title="Страница примера · content/ru/examples/composition-inheritance.md"}
:::
:::code {src="../../../docara.json" lang=json title="Настройки сайта · docara.json"}
:::
:::code {src="../demonstrator-results/composition-inheritance/section.json" lang=json title="Настройки раздела · content/ru/demonstrator-results/composition-inheritance/section.json"}
:::
:::code {src="../demonstrator-results/composition-inheritance/page.md" lang=markdown title="Markdown страницы · content/ru/demonstrator-results/composition-inheritance/page.md"}
:::
:::code {src="../demonstrator-results/composition-inheritance/page.page.json" lang=json title="Переопределение страницы · content/ru/demonstrator-results/composition-inheritance/page.page.json"}
:::
{
"schema": "docara.site.v1",
"title": "Docara",
"preset": "docs",
"content_root": "content/ru",
"framework_lock": "simai-framework.lock.json",
"smart": {
"namespace": "project"
},
"default_locale": "ru",
"locales": {
"missing_page_policy": "skip",
"ru": {
"label": "Русский",
"direction": "ltr",
"content_root": "content/ru",
"public_prefix": "ru",
"fallbacks": []
}
},
"locale_routing": {
"strategy": "prefixed",
"root": "redirect",
"detect_browser_language": false,
"legacy_unprefixed_redirects": true
},
"documentation_version": "current",
"redirects_file": "redirects.json",
"base_url": "/",
"branding": {
"title": "Docara",
"mode": "compact",
"size": "large",
"logo": "assets/docara-mark.svg",
"favicon": "assets/favicon.ico"
},
"layout": {
"key": "docara.docs",
"container": {
"max": 7
},
"scrollbar": {
"preset": "overlay"
},
"content": {
"gap": 0
}
},
"settings": {
"theme": "system",
"modal_blur": "none",
"ui_radius": "default"
},
"reader_preferences": {
"enabled": true,
"view": "side-panel",
"groups": [
{
"id": "appearance",
"fields": [
"appearance.theme",
"appearance.font_size",
"appearance.content_width"
]
}
]
},
"search": {
"enabled": true,
"indexed": true
},
"reading": {
"breadcrumbs": true,
"toc": true,
"toc_depth": 3,
"previous_next": true
},
"site_url": "https://docara.simai.io/"
}
{
"schema": "docara.section.v1",
"title": "Наследуемая композиция",
"navigation": {"hidden": true},
"search": {"indexed": false},
"layout": {
"regions": {
"sidebar": {
"sections": [
{"id": "docs-navigation", "section": "docara.navigation"},
{
"id": "section-context",
"section": "docara.shell",
"utilities": ["flex", "flex-col", "gap-1", "p-2", "surface-0"],
"blocks": [
{"id": "label", "block": "shell.element", "slot": "content", "element": {"tag": "p", "text": "Этот блок унаследован от section.json.", "utilities": ["m-0"]}}
]
}
]
},
"outline": {"enabled": false}
}
}
}
# Три уровня настроек
Эта страница получает бренд, тему и ширину от `docara.json`, дополнительный
sidebar — от `section.json`, а aside и footer — от собственного sidecar.
## Наследование сайта
Брендированный header не повторяется в настройках раздела или страницы.
## Переопределение раздела
Sidebar заменён на уровне раздела и содержит дополнительный контекст.
## Reset страницы
Страница сбрасывает отключённый aside к явной композиции и включает footer.
{
"schema": "docara.page.v1",
"title": "Композиция: сайт → раздел → страница",
"description": "Три уровня наследования областей с явным reset страницы.",
"layout": {
"regions": {
"outline": {
"$reset": true,
"enabled": true,
"sections": [
{"id": "page-outline", "section": "docara.outline"},
{
"id": "page-context",
"section": "docara.shell",
"utilities": ["flex", "flex-col", "gap-1"],
"blocks": [
{"id": "label", "block": "shell.element", "slot": "content", "element": {"tag": "p", "text": "Aside переопределён в page.page.json.", "utilities": ["m-0"]}}
]
}
]
},
"footer": {
"enabled": true,
"sections": [
{
"id": "page-footer",
"section": "docara.shell",
"utilities": ["flex", "flex-col", "gap-1", "p-2", "surface-0"],
"blocks": [
{"id": "label", "block": "shell.element", "slot": "content", "element": {"tag": "p", "text": "Footer включён только для этой страницы.", "utilities": ["m-0"]}}
]
}
]
}
}
}
}