Здесь будет более менее живая заметка о том, как происходит переход. Идея была честно скопирована с западного примера: https://quartz.eilleeenz.com/Quartz-customization-log

Что хочется поменять

Функционально:

  • добавить Recent notes слева на Desktop
  • добавить чтобы у заметки была дата создания и дата обновления
  • сделать кастомный crawler, который поменяет Openbox url на урлы до цифрового архива.
  • добавить navbar с дизайном с vanadium23.me
  • на десктопе сделать более широкий контент
  • переверстать страницу одной заметки на более минималистичную
  • накатить новый дизайн на classless

Проблемы:

  • из-за наличия permalinks у меня не сломались старые пути, но новые выглядят как openbox/Openbox - необходимо придумать как от дубля избавиться
    • решилось тем, что openbox в архив, а quartz натянут на блог
  • починить slugify в obsidian-digital-garden, который создаёт бесконечный редирект на quartz
  • починить preview для ссылок (opengraph метаданные)
    • поменять картинку
  • починить загрузку картинок через digital garden
  • разобраться с бесконечным permalink, если совпадает с slug
    • закинуть PR с фиксом бесконечных редиректов в upstream
  • починить шрифт в картинках на превьюшках

Добавлено в quartz

Подтягивание дат

В quartz настроено куча полей откуда по умолчанию брать даты создания и изменения (src), суть в том что на всех не напасёшься. Поэтому пришлось сделать пару изменений (src).

По хорошему эта переделка должна быть такой:

  • В contentMeta сказать какие поля показывать в качестве дат (по умолчанию только created).
  • В lastmod для frontmatter добавить конфиг с полями для проверки даты модификации и старты.

И это тогда можно законтрибьютить назад.

В quartz есть header, но он помещается над основным контентом и учитывает левые и правый сайдбар в ширине. А на сайтах часто есть ещё и navbar сверху, над всем контентом сайта.

В этом плане мне нравится то, что добавились семантические теги в html.

semantic html|400

Header уже сделан неправильно, но вот nav точно должен быть над article. Получилось сделать в PR 11.

Переход на quartz

В тот же момент, когда и выбирал разворачивать в прошлый раз quartz уже был. Правда, вся его архитектура была другая: в основе был hugo и сверху него был скрипт, который приводил obsidian markdown к hugo like. Выглядела конструкция хрупко, а сейчас у этого инструмента уже v4.

В этот раз всё сделано с помощью Typescript и довольно сильно напоминает eleventy. И стоит посмотреть на архитектуру:

  • сам quartz из себя представляет pipeline применённых плагинов, которые разделяются на три вида:
    • transformers - меняют контент внутри заметки (регулярки на стероидах)
    • filters - фильтруют какие файлы не надо публиковать
    • emitters - преобразуют заметку + метаданные в финальный вид (html для сайта, xml для RSS, json для графа)
  • компоненты - это то из чего состоит страница.
    • сама страница разбивается на 5 блока: сверху, контент, справа и футер
    • компонентами являются: метаданные, table of content, локальный граф, и много чего ещё