From 65322c20c14f12a3fa4bf066292685969f8c4a5b Mon Sep 17 00:00:00 2001 From: MisakaAkio Date: Sat, 22 Aug 2026 22:40:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A1=B5=E9=9D=A2=E6=A0=87?= =?UTF-8?q?=E9=A2=98=E8=B7=AF=E7=94=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/layout.tsx | 5 ++++- src/app/news/[slug]/page.tsx | 14 ++++++++++++ src/app/news/page.tsx | 6 +++++- src/components/layout/page-breadcrumb.tsx | 3 ++- src/components/layout/site-header.tsx | 18 +++++++++++++++- src/components/news/news-list.tsx | 20 ++++++++++++++--- src/components/news/news-share.tsx | 26 +++++++++++++++++------ src/locales/en.json | 16 +++++++++++++- src/locales/ja.json | 14 ++++++++++++ src/locales/zh-CN.json | 16 +++++++++++++- src/locales/zh-TW.json | 14 ++++++++++++ 11 files changed, 137 insertions(+), 15 deletions(-) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index f6142c2..ee1e983 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -4,7 +4,10 @@ import { SiteFooter } from "@/components/layout/site-footer"; import { SiteHeader } from "@/components/layout/site-header"; export const metadata: Metadata = { - title: "Kivotos Railway", + title: { + default: "基沃托斯铁道公团 KivotosRailway", + template: "%s | 基沃托斯铁道公团 KivotosRailway", + }, description: "Kivotos Railway website", icons: { icon: "/icon/icon.svg", diff --git a/src/app/news/[slug]/page.tsx b/src/app/news/[slug]/page.tsx index e1970cf..e004968 100644 --- a/src/app/news/[slug]/page.tsx +++ b/src/app/news/[slug]/page.tsx @@ -1,8 +1,22 @@ +import type { Metadata } from "next"; import Link from "next/link"; import { getNewsBySlug, markdownToHtml } from "@/data/news"; import { PageBreadcrumb } from "@/components/layout/page-breadcrumb"; import { NewsShare } from "@/components/news/news-share"; +export async function generateMetadata({ + params, +}: { + params: Promise<{ slug: string }>; +}): Promise { + const { slug } = await params; + const item = await getNewsBySlug(slug); + + return { + title: item?.title ?? "新闻", + }; +} + export default async function NewsDetailPage({ params, }: { diff --git a/src/app/news/page.tsx b/src/app/news/page.tsx index f2789c7..cc7fbaf 100644 --- a/src/app/news/page.tsx +++ b/src/app/news/page.tsx @@ -1,8 +1,12 @@ -import Link from "next/link"; +import type { Metadata } from "next"; import { getNewsList } from "@/data/news"; import { PageBreadcrumb } from "@/components/layout/page-breadcrumb"; import { NewsList } from "@/components/news/news-list"; +export const metadata: Metadata = { + title: "新闻", +}; + export default async function NewsPage() { const news = await getNewsList(); diff --git a/src/components/layout/page-breadcrumb.tsx b/src/components/layout/page-breadcrumb.tsx index fc2948b..d7d5786 100644 --- a/src/components/layout/page-breadcrumb.tsx +++ b/src/components/layout/page-breadcrumb.tsx @@ -1,8 +1,9 @@ import Link from "next/link"; +import { getLocaleMessages } from "@/lib/i18n"; export function PageBreadcrumb({ items }: { items: Array<{ label: string; href?: string }> }) { return ( -