1bf22a8f95
- 新增 COMPANY_INFO.displayName 属性用于页面标题和SEO元数据 - 统一所有页面 metadata 使用 displayName(简体"睿新致远") - 视觉展示元素保留 shortName(繁体"睿新致遠"配合青柳隷書字体) - 修复关于/联系/团队页面标题中公司名重复出现的问题 - 修复新闻ID从数字改为SEO友好slug - 更新结构化数据使用完整公司名 - 修复ESLint报错:引号转义、组件displayName、any类型替换
38 lines
947 B
TypeScript
38 lines
947 B
TypeScript
import { notFound } from 'next/navigation';
|
|
import { NEWS, COMPANY_INFO } from '@/lib/constants';
|
|
import { NewsDetailClient } from './NewsDetailClient';
|
|
|
|
export async function generateStaticParams() {
|
|
return NEWS.map((news) => ({
|
|
slug: news.id,
|
|
}));
|
|
}
|
|
|
|
export async function generateMetadata({ params }: { params: Promise<{ slug: string }> }) {
|
|
const { slug } = await params;
|
|
const news = NEWS.find((n) => n.id === slug);
|
|
|
|
if (!news) {
|
|
return {
|
|
title: '新闻未找到',
|
|
};
|
|
}
|
|
|
|
return {
|
|
title: `${news.title} - ${COMPANY_INFO.displayName}`,
|
|
description: news.excerpt,
|
|
};
|
|
}
|
|
|
|
export default async function NewsDetailPage({ params }: { params: Promise<{ slug: string }> }) {
|
|
const { slug } = await params;
|
|
const news = NEWS.find((n) => n.id === slug);
|
|
|
|
if (!news) {
|
|
notFound();
|
|
}
|
|
|
|
const serializedNews = JSON.parse(JSON.stringify(news));
|
|
return <NewsDetailClient news={serializedNews} />;
|
|
}
|