- hugo.toml: [taxonomies] series = "series"; [params.socialIcons] (github, telegram, rss) - layouts/partials/series_nav.html: модуль «Серия: N из M» с навигацией prev/next (сортировка по series_order), поддержка кириллических названий серий - layouts/_default/single.html: override темы — подключение series_nav перед контентом - layouts/partials/extend_footer.html: JS переносит .logo-switches из .logo в конец .nav (переключатель темы — справа после меню); server-rendered блок соцсетей переносится к меню; иконки — через штатный svg.html темы (github/telegram/rss) - assets/css/extended/typewriter.css: стили .social-icons-inline, .series-nav; .logo-switches после переноса попадает под .nav > .logo-switches (order:2) Closes openspec change series-taxonomy-and-header
3.3 KiB
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]