diff options
| author | Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> | 2026-11-05 14:58:06 +0900 |
|---|---|---|
| committer | Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> | 2026-11-05 14:58:06 +0900 |
| commit | e7b60d5ef8c8cf5471a62498fd0a88f61cd2812e (patch) | |
| tree | 7a7033fc634baa1d7695dd52e90961e98cfc5e16 /src/components/ScheduleMonthLinks.astro | |
| parent | 3e02a6a05c6a5b26fbb19fa91be9afbc6b12877d (diff) | |
events: メインは前月以降、アーカイブは前々月以前に分ける
メインページの一覧とカレンダーを前月以降に広げ、前々月以前の月だけを
アーカイブとして生成するようにした。該当が無いときはアーカイブ欄に
その旨を表示する。月が進めば自動でページが増える。
RSSと旧URLの転送先も、存在しない月ページを指さないよう合わせた。
Diffstat (limited to 'src/components/ScheduleMonthLinks.astro')
| -rw-r--r-- | src/components/ScheduleMonthLinks.astro | 62 |
1 files changed, 37 insertions, 25 deletions
diff --git a/src/components/ScheduleMonthLinks.astro b/src/components/ScheduleMonthLinks.astro index adf3b32..61f1ae1 100644 --- a/src/components/ScheduleMonthLinks.astro +++ b/src/components/ScheduleMonthLinks.astro @@ -1,40 +1,52 @@ --- // 月別・年度別アーカイブのリンク一覧。行事予定ページの下部に置く。 +// アーカイブは前々月以前の月だけ(前月以降はメインページに掲載している)。 import { - fiscalYearKeys, + archiveFiscalYearKeys, + archiveMonthKeys, fiscalYearLabel, fiscalYearOf, monthCounts, - monthKeys, monthLabel, } from '@/lib/schedule-months'; import { scheduleUrl } from '@/data/schedule/config'; -const groups = fiscalYearKeys.map((fy) => ({ +const groups = [...new Set(archiveMonthKeys.map((month) => fiscalYearOf(month)))].map((fy) => ({ key: fy, label: fiscalYearLabel(fy), - months: monthKeys.filter((month) => fiscalYearOf(month) === fy), + hasPage: archiveFiscalYearKeys.includes(fy), + months: archiveMonthKeys.filter((month) => fiscalYearOf(month) === fy), })); --- -<div class="schedule-archive"> - { - groups.map((group) => ( - <section class="schedule-archive-year"> - <h3 class="schedule-archive-year-title"> - <a href={scheduleUrl(`${group.key}/`)}>{group.label}の予定</a> - </h3> - <ul class="schedule-archive-months"> - {group.months.map((key) => ( - <li> - <a href={scheduleUrl(`${key}/`)}> - <span>{monthLabel(key)}</span> - <span class="schedule-archive-count">{monthCounts[key]}件</span> - </a> - </li> - ))} - </ul> - </section> - )) - } -</div> +{ + groups.length === 0 ? ( + <p class="schedule-archive-empty"> + 前々月より前に終了した予定はまだありません。月が進むと、ここに過去の予定が表示されます。 + </p> + ) : ( + <div class="schedule-archive"> + {groups.map((group) => ( + <section class="schedule-archive-year"> + <h3 class="schedule-archive-year-title"> + {group.hasPage ? ( + <a href={scheduleUrl(`${group.key}/`)}>{group.label}の予定</a> + ) : ( + group.label + )} + </h3> + <ul class="schedule-archive-months"> + {group.months.map((key) => ( + <li> + <a href={scheduleUrl(`${key}/`)}> + <span>{monthLabel(key)}</span> + <span class="schedule-archive-count">{monthCounts[key]}件</span> + </a> + </li> + ))} + </ul> + </section> + ))} + </div> + ) +} |
