49 lines
3.3 KiB
Markdown
49 lines
3.3 KiB
Markdown
# archive-by-year-month Specification
|
|
|
|
## Purpose
|
|
Страница «Архив» (/posts/) блога dedinit.ru отображает все посты,
|
|
сгруппированные по годам и месяцам (как штатный архив Hugo), вместо
|
|
плоского списка с пагинацией.
|
|
|
|
## Requirements
|
|
|
|
### Requirement: Группировка постов по годам и месяцам
|
|
Система SHALL отображать на странице /posts/ список всех постов,
|
|
сгруппированный по годам публикации, и внутри каждого года — по месяцам
|
|
публикации. Заголовки содержат год/месяц и количество постов в группе.
|
|
|
|
#### Scenario: Страница /posts/ показывает годы
|
|
- **WHEN** пользователь открывает страницу /posts/
|
|
- **THEN** страница содержит заголовки годов (например «2026», «2023»), под каждым — посты этого года
|
|
- **AND** возле каждого года отображается количество постов
|
|
|
|
#### Scenario: Внутри года посты сгруппированы по месяцам
|
|
- **WHEN** пользователь открывает страницу /posts/
|
|
- **THEN** внутри каждого года посты сгруппированы по месяцам публикации (например «January», «September»)
|
|
- **AND** возле каждого месяца отображается количество постов
|
|
|
|
#### Scenario: Каждый пост — ссылка на свою страницу
|
|
- **WHEN** пользователь видит запись в архиве
|
|
- **THEN** заголовок поста является ссылкой на его страницу (permalink)
|
|
- **AND** под заголовком отображаются метаданные поста (дата и пр.)
|
|
|
|
### Requirement: Заголовок и описание страницы
|
|
Система SHALL отображать на странице /posts/ заголовок «Архив» и описание
|
|
страницы (из frontmatter секции).
|
|
|
|
#### Scenario: Заголовок страницы
|
|
- **WHEN** пользователь открывает страницу /posts/
|
|
- **THEN** заголовок страницы — «Архив»
|
|
|
|
### Requirement: Сохранение остальной функциональности секции
|
|
Система SHALL сохранять работоспособность RSS-ленты секции /posts/ и URL
|
|
постов (permalinks не меняются) при переключении layout на архив.
|
|
|
|
#### Scenario: RSS секции не сломан
|
|
- **WHEN** пользователь запрашивает RSS-ленту секции /posts/ (index.xml)
|
|
- **THEN** лента валидна и содержит посты секции
|
|
|
|
#### Scenario: Permalinks постов не меняются
|
|
- **WHEN** пользователь открывает пост из архива
|
|
- **THEN** URL поста соответствует permalink /:year/:slug/ (как и раньше)
|