Files

3.3 KiB
Raw Permalink Blame History

Design: Серии постов, переключатель темы справа, соцсети в меню

Constraints

  • Тема rDedInit (форк PaperMod) НЕ модифицируется. Все правки — через штатные хуки: корневой layouts/partials/extend_footer.html (JS-инжект), корневой layouts/partials/extend_head.html (CSS), assets/css/extended/, hugo.toml.
  • OpenSpec: change создаётся до правок.

1. Таксономия series

  • hugo.toml: [taxonomies] series = "series" (в дополнение к category/tag).

  • Новый партиал layouts/partials/series_nav.html:

    • принимает страницу, читает .Params.series (массив) и .Params.series_order;
    • для первой серии берёт site.Taxonomies.series → term → .Pages, сортирует по series_order, ищет текущий, выводит блок: «Серия: НАЗВАНИЕ · № текущий из N» + ссылки «← Пред.» / «След. →»;
    • если параметров нет — не выводит ничего.
  • Подключение: в корневом layouts/_default/single.html (override с {{- define "main" }}? НЕТ — переопределять весь single.html опасно). Вместо этого: тот же подход, что у PaperMod — вывод БЛОКА серии в начале .post-content. В rDedInit single.html НЕ имеет content-хука. Безопасный вариант — JS-инжект невозможен для контента, поэтому навешиваем через partial в single.html... но это правка темы!

    Обход: PaperMod'ы имеют layouts/partials/extend_head.html и extend_footer.html, но для контента single.html нет хука. Классический PaperMod-приём: assets/scss/extended/ + margin, нет. Реально: тема rDedInit НЕ поддерживает серии. Добавить можно только: (а) форкнуть single.html в корневой layouts/_default/single.html (переопределение — штатный механизм Hugo, тема не трогается), и вставить {{- partial "series_nav.html" . -}} перед .post-content. Это переопределение будет жить в репозитории сайта и переживёт апдейты темы (требует ручного обновления при изменении темы — приемлемо, тема статична).

    Решение: переопределить layouts/_default/single.html в корне сайта, скопировав из темы (65 строк) и добавив {{- partial "series_nav.html" . }}.

2. Переключатель темы справа

  • layouts/partials/extend_footer.html (уже есть) — добавить JS:
    const nav = document.querySelector('.nav');
    const sw = document.querySelector('.logo .logo-switches');
    if (nav && sw && !sw.dataset.moved) {
        sw.dataset.moved = '1';
        nav.appendChil...[truncated]