Структура контента в recipe-репозиториях

Как в шаблонах Notepub устроены типы страниц, главная, хабы, поиск и связи между заметками.

Эта страница объясняет базовую структуру контента для шаблонов:

  • notepub-recipe-blog
  • notepub-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:

  • type
  • slug
  • title

В шаблоне 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 (preview from: "description")

Поэтому для предсказуемого результата важно заполнять description.

Как работают связи и линки

В recipe обычно есть три вида связей:

  • belongs_to — принадлежность к хабам через поле hub
  • related — ручные связи через поле related
  • wiki — wiki-ссылки в тексте (синтаксис двойных квадратных скобок)

Для понимания синтаксиса wikilinks, алиасов и порядка резолва смотрите отдельный док: Ссылки и wikilinks

Практический принцип моделирования заметок

Если вы хотите использовать собственную структуру вашего Markdown-мира

  1. Сначала определите набор hub-страниц (верхнеуровневые разделы).
  2. Привязывайте статьи к hub через hub.
  3. Добавляйте related только там, где нужна явная редакторская связь.
  4. Для поиска заполняйте title и description у каждой заметки.
  5. Держите slug стабильным; при изменении добавляйте редиректы.
Все результаты