Read in:
Русский

Граф заметок

Коротко. Админка, Notes & Content, Note Graph показывает хранилище как граф: заметки это узлы, вики-ссылки это ребра. Раскладка стягивает заметки одной группы в кластер, а поле Group by: задает признак группировки: подграф (по умолчанию) или любой ключ frontmatter, например lang или author. Чтобы сгруппировать целые папки без правки каждой заметки, добавьте в хранилище файл frontmatter-патча.

Что показывает граф

Каждая заметка это узел, каждая вики-ссылка это ребро со стрелкой от ссылающейся заметки к целевой. Оформление узла кодирует состояние:

Маркер Значение
Зеленый квадрат Публичная заметка (free: true)
Ромб Главная страница
Круг цвета подграфа Заметка в этом подграфе
Серый круг Без подграфа

Цвета берутся из настроек подграфов: Admin, Notes & Content, Subgraphs.

Перетащите узел, и новая позиция сохранится сразу. Граф работает как холст: раскладку можно собрать руками, а не только автоматом.

Кнопки в шапке

Кнопка Что делает
Auto layout Пересчитывает все позиции силовой раскладкой. Заметки одной группы притягиваются друг к другу, появляются кластеры. Не сохраняется, пока не нажать Save positions
Save positions Сохраняет текущие позиции всех узлов
Public outside При следующем Auto layout выносит публичные (free: true) заметки на внешнее кольцо. Удобно увидеть публичную поверхность сайта вокруг закрытого ядра
Group by: Поле frontmatter для кластеризации. По умолчанию subgraph

Группировка по любому полю frontmatter

Введите ключ frontmatter в Group by: и нажмите Auto layout. Заметки с одинаковым значением ключа соберутся в один кластер:

  • subgraph (по умолчанию) группирует по меткам подграфов, зоны доступа видны как кластеры.
  • lang делит граф на языковые острова.
  • Работает любой свой ключ: author, status, type, что угодно из ваших заметок.

Заметки без этого поля остаются вне кластеров и располагаются только по связям. Пока позиции не сохранены, граф перекластеризуется сразу при смене поля; при сохраненных позициях он держит их, пока вы не нажмете Auto layout, так что случайный ввод не разрушит ручную раскладку.

Группировка из самого хранилища

Проставлять ключ сотням заметок руками бессмысленно. Заметка с frontmatter-патчем назначает ключ группировки целым папкам при загрузке. Демо-хранилище этого сайта делает ровно это файлом _graph_groups.md в корне:

---
type: frontmatter-patch
include:
  - demo/**
  - en/user/**
  - ru/user/**
  - en/hub/**
  - ru/hub/**
---

```jsonnet
if std.objectHas(meta, "subgraph") || std.objectHas(meta, "subgraphs") then {}
else if std.startsWith(path, "demo/") then { subgraph: "demo" }
else if std.startsWith(path, "en/user/") then { subgraph: "en_user" }
else if std.startsWith(path, "ru/user/") then { subgraph: "ru_user" }
else if std.startsWith(path, "en/hub/") || std.startsWith(path, "ru/hub/") then { subgraph: "hub" }
else {}
```

Как это читать: include перечисляет папки, к которым применяется правило, jsonnet-блок вычисляет frontmatter для подмешивания. Заметка с уже объявленным subgraph или subgraphs не трогается, остальные получают подграф по папке. Откройте граф заметок на этом сайте и увидите четыре кластера: demo, en_user, ru_user, hub.

Две вещи, которые стоит знать:

  • Метка подграфа сама по себе не закрывает заметку. Доступ это отдельная ось: free: true оставляет заметку публичной, а читателей ограничивает только подграф с настроенными правилами доступа. См. ru/user/subgraphs.
  • Имя файла начинается с _, поэтому сама заметка-патч скрыта из поиска и списков.

Тот же прием работает для любого поля группировки, не только subgraph. Пропатчьте папку { team: "platform" } и группируйте граф по team.

Смотрите также

  • ru/user/subgraphs о том, что такое подграфы и как устроен доступ
  • ru/user/frontmatter_patches полный синтаксис патчей: глобы, exclude, приоритеты, цепочки