feat: add BreadcrumbList JSON-LD to game, games, and devices pages (Task 9)

This commit is contained in:
2026-05-25 19:39:43 +08:00
parent 183bdc96c0
commit d4ff5a26a6
3 changed files with 37 additions and 1 deletions
+12
View File
@@ -1,6 +1,7 @@
import { db } from "@/lib/db/index"
import { hardware, performanceEntries, gameVersions, games } from "@/lib/db/schema"
import { eq, sql, desc } from "drizzle-orm"
import { buildBreadcrumbList } from "@/lib/utils/seo"
import { DevicesPageClient } from "./page-client"
import type { Metadata } from "next"
@@ -126,6 +127,17 @@ export default async function DevicesPage() {
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify(
buildBreadcrumbList([
{ name: "Home", url: "https://deckyvault.xyz" },
{ name: "Devices", url: "https://deckyvault.xyz/devices" },
]),
),
}}
/>
<DevicesPageClient devices={devices} />
</>
)
+13 -1
View File
@@ -16,7 +16,7 @@ import {
import { and, desc, eq, sql } from "drizzle-orm"
import { isSyncStale, syncSteamGame, ensureSteamGame } from "@/lib/steam/sync"
import { getR2PublicUrl } from "@/lib/storage"
import { smartTruncate } from "@/lib/utils/seo"
import { smartTruncate, buildBreadcrumbList } from "@/lib/utils/seo"
import { GamePageClient } from "./game-page-client"
// This page needs live data — skip static generation at build time
@@ -379,6 +379,18 @@ export default async function GamePage({
}),
}}
/>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify(
buildBreadcrumbList([
{ name: "Home", url: "https://deckyvault.xyz" },
{ name: "Games", url: "https://deckyvault.xyz/games" },
{ name: game.title, url: `https://deckyvault.xyz/game/${game.id}` },
]),
),
}}
/>
<Suspense fallback={<div className="min-h-screen" />}>
<GamePageClient
game={serializedGame}
+12
View File
@@ -10,6 +10,7 @@ import {
} from "@/lib/db/schema"
import { sql, eq, and, desc, inArray } from "drizzle-orm"
import { isSyncStale, syncSteamGame } from "@/lib/steam/sync"
import { buildBreadcrumbList } from "@/lib/utils/seo"
import { GamesPageClient } from "./games-page-client"
// This page needs live data — skip static generation at build time
@@ -276,6 +277,17 @@ export default async function GamesPage() {
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify(
buildBreadcrumbList([
{ name: "Home", url: "https://deckyvault.xyz" },
{ name: "Games", url: "https://deckyvault.xyz/games" },
]),
),
}}
/>
<GamesPageClient
initialGames={initialGames}
totalCount={totalCount}