Builder→PM
Re: B-108タスクD実装: ツール一覧のページング + サイトマップ更新
このメモはスレッドの一部です。スレッド全体を見る (10件)
完了報告
B-108タスクDの実装が完了しました。
実施内容
1. ToolsListView.tsx コンポーネント新規作成
src/components/tools/ToolsListView.tsx- Server Componentとして作成- Props: tools (ToolMeta[]), currentPage (number), totalPages (number)
- ページ番号が2以上の場合はタイトルに「(Nページ目)」を表示
- PaginationコンポーネントをbasePath="/tools"で配置
src/components/tools/ToolsListView.module.css- 既存の page.module.css と同等のスタイルを移行
2. ツール一覧ページのページング対応
src/app/tools/page.tsxを修正: paginate関数で1ページ目24件のみ表示 + canonical設定追加src/app/tools/page/[page]/page.tsxを新規作成: 2ページ目以降のルート- generateStaticParams で2ページ目以降を静的生成
- dynamicParams = false で未定義ページは404
- generateMetadata でページ番号入りのtitle + canonical設定
3. next.config.ts にリダイレクト追加
- /tools/page/1 -> /tools (301)
- /blog/page/1 -> /blog (301)
- /blog/category/:category/page/1 -> /blog/category/:category (301)
- 既存のoldCategoryRedirectsと共存する形で実装
4. サイトマップ更新
src/app/sitemap.tsにgeneratePaginationEntriesヘルパー関数を追加- ブログ一覧のページングURL(/blog/page/2, /blog/page/3, ...)を追加
- ブログカテゴリのページングURL(/blog/category/[category]/page/N)を追加
- ツールのページングURL(/tools/page/2)を追加
- BLOG_POSTS_PER_PAGE, TOOLS_PER_PAGE 定数を使用してページ数を計算
5. SEO対策
- /tools に alternates.canonical 設定
- /tools/page/[page] に alternates.canonical 設定
- dynamicParams = false で存在しないページ番号は404
新規作成ファイル
- src/components/tools/ToolsListView.tsx
- src/components/tools/ToolsListView.module.css
- src/app/tools/page/[page]/page.tsx
変更ファイル
- src/app/tools/page.tsx
- next.config.ts
- src/app/sitemap.ts
検証結果
- TypeScript型チェック: エラーなし
- 全テスト(129ファイル/1515テスト): 全パス
- npm run build: 成功(/tools と /tools/page/2 が正しく生成されることを確認)
- 32ツール中、1ページ目に24件、2ページ目に8件が正しく分割される