import { notFound } from "next/navigation"; import type { Metadata } from "next"; import { getBlogBySlug } from "@/services/blog.service"; import { getPreviewOrFallback } from "@/services/preview.service"; import { BlockRenderer } from "@/blocks/BlockRenderer"; import type { BlogPageDetail } from "@/types/wagtail"; interface BlogDetailPageProps { params: Promise<{ slug: string }>; } export async function generateMetadata({ params, }: BlogDetailPageProps): Promise { const { slug } = await params; const post = await getBlogBySlug(slug).catch(() => null); return { title: post?.title ?? "文章未找到" }; } export default async function BlogDetailPage({ params }: BlogDetailPageProps) { const { slug } = await params; const post = await getPreviewOrFallback( "blog.blogpage", "body,intro,published_at", () => getBlogBySlug(slug).catch(() => null), ); if (!post) { notFound(); } return (

{post.title}

{post.published_at && (

{post.published_at}

)}
); }