Структура контента в recipe-репозиториях
Как в шаблонах Notepub устроены типы страниц, главная, хабы, поиск и связи между заметками.
Эта страница объясняет базовую структуру контента для шаблонов:
notepub-recipe-blognotepub-recipe-docs
Какие типы страниц есть в recipe
Оба recipe используют общую идею типов:
home— главная страница (/)page— обычная страница (/{{ slug }}/в docs-recipe,/{{ slug }}/для page в blog-recipe)article— статья (в blog-recipe обычно/articles/{{ slug }}/, в docs-recipe/{slug}/)hub— тематический раздел/хабsearch— страница поиска (/search/)
Минимальные обязательные поля frontmatter:
typeslugtitle
В шаблоне docs-портала (np) используются языковые типы (home_ru, article_ru, hub_ru и т.д.), но логика та же.
Как работает главная
home — это одна специальная страница с route /.
Валидация recipe ожидает ровно одну страницу этого типа (как и одну search).
На главной обычно показываются:
- подборки статей/страниц
- список хабов
- карточки избранного контента (в blog-recipe)
Состав блоков задается collections в rules.yaml и шаблоном home.html.
Как работают хабы
hub — это страница раздела, в которую попадает контент по ссылкам из frontmatter.
Базовый механизм:
- в статье/странице указываете
hub: ["some-hub"] - link-правило
belongs_toсвязывает материал с hub поslug - коллекция
hub_itemsстроит список материалов для страницы хаба
Итог: хаб собирается автоматически, когда вы правильно заполняете hub.
Как работают страницы и статьи
Практически:
page— обычно для статических разделов (about, contacts, landing-страницы)article— основной поток заметок/доков
Что попадает в поиск и sitemap задается в rules.yaml:
- обычно в поиск идут
pageиarticle home,hub,searchобычно не индексируются в поиске
Как работает поиск
В recipe есть отдельная страница search и правила search в rules.yaml.
Типовая схема:
- search-индекс строится по
pageиarticle - draft-материалы исключаются (
exclude_drafts: true) - snippet берется из
description(previewfrom: "description")
Поэтому для предсказуемого результата важно заполнять description.
Как работают связи и линки
В recipe обычно есть три вида связей:
belongs_to— принадлежность к хабам через полеhubrelated— ручные связи через полеrelatedwiki— wiki-ссылки в тексте (синтаксис двойных квадратных скобок)
Для понимания синтаксиса wikilinks, алиасов и порядка резолва смотрите отдельный док: Ссылки и wikilinks
Практический принцип моделирования заметок
Если вы хотите использовать собственную структуру вашего Markdown-мира
- Сначала определите набор hub-страниц (верхнеуровневые разделы).
- Привязывайте статьи к hub через
hub. - Добавляйте
relatedтолько там, где нужна явная редакторская связь. - Для поиска заполняйте
titleиdescriptionу каждой заметки. - Держите
slugстабильным; при изменении добавляйте редиректы.