@shinyaz

タグページがブログ記事しか見ていなくて TIL 専用タグが 404 になっていた

約1分

タグページで TIL 専用のタグ(ブログ記事には使われていないタグ)にアクセスすると 404 になることに気づいた。

原因はシンプルで、getAllTags がブログ記事(posts)だけを見ていたからだ。generateStaticParams もこの関数を使っていたので、TIL にしか存在しないタグのページはそもそも生成されていなかった。

// Before: ブログ記事のタグしか返さない
export function getAllTags(locale?: Locale) {
  const publishedPosts = getPublishedPosts(locale);
  const tagSet = new Set<string>();
  for (const post of publishedPosts) {
    for (const tag of post.tags) tagSet.add(tag);
  }
  return Array.from(tagSet).sort();
}

修正は tils もインポートして両方のタグを統合する getAllTagsIncludingTils を追加した。タグ詳細ページでもブログ記事と TIL を両方取得し、両方ある場合はセクション分けして表示するようにした。

Velite で複数のコンテンツコレクション(posts, tils)を扱う場合、タグやカテゴリの集約関数がどのコレクションを対象にしているか意識しないと、こういう抜けが起きる。コンテンツタイプを追加したときはタグ・カテゴリ周りの関数も確認すべきだ。

共有する

田原 慎也

田原 慎也

ソリューションアーキテクト @ AWS

AWS ソリューションアーキテクトとして金融業界のお客様を中心に技術支援を行っています。クラウドアーキテクチャや AI/ML に関する学びをこのサイトで発信しています。このサイトの内容は個人の見解であり、所属企業の公式な意見や見解を代表するものではありません。