diff --git a/app/[locale]/product/[slug]/page.tsx b/app/[locale]/product/[slug]/page.tsx index c9aff38..5f861ac 100644 --- a/app/[locale]/product/[slug]/page.tsx +++ b/app/[locale]/product/[slug]/page.tsx @@ -1,3 +1,4 @@ +import MDXComponents from "@/components/mdx/MDXComponents"; import ProductTabsClient from "@/components/ProductTabsClient"; import { Locale, LOCALES } from "@/i18n/routing"; import { getProducts } from "@/lib/getProducts"; @@ -5,7 +6,9 @@ import { constructMetadata } from "@/lib/metadata"; import { Product } from "@/types/product"; import { Metadata } from "next"; import { getTranslations } from "next-intl/server"; +import { MDXRemote } from "next-mdx-remote-client/rsc"; import { notFound } from "next/navigation"; +import remarkGfm from "remark-gfm"; // 引入表格解析插件 type Params = { locale: string; @@ -23,7 +26,7 @@ export async function generateMetadata({ try { const { products }: { products: Product[] } = await getProducts(locale); - const product = products.find((product) => product.slug === slug); + const product = products.find((product) => product.slug == slug); if (!product) { return constructMetadata({ @@ -117,8 +120,8 @@ export default async function ProductPage({ params }: { params: Promise

{product.title || "未命名产品"}

- {t("productModel")}: - {product.model || "暂无"} + {t('productDetail')}: + {product.desc || "暂无"}
{t("productPlace")}: @@ -155,10 +158,17 @@ export default async function ProductPage({ params }: { params: Promise + +
diff --git a/components/ProductTabsClient.tsx b/components/ProductTabsClient.tsx index 33620e1..5e18088 100644 --- a/components/ProductTabsClient.tsx +++ b/components/ProductTabsClient.tsx @@ -8,10 +8,11 @@ type ProductTabsClientProps = { spec: string[]; packaging: string; locale: string; + models: string[]; }; // 纯客户端交互组件(仅处理标签页切换) -export default function ProductTabsClient({ detail, spec, packaging, locale }: ProductTabsClientProps) { +export default function ProductTabsClient({ detail, models, spec, packaging, locale }: ProductTabsClientProps) { const [activeTab, setActiveTab] = useState('spec'); // 仅客户端使用状态 const t = useTranslations("Product"); @@ -23,7 +24,7 @@ export default function ProductTabsClient({ detail, spec, packaging, locale }: P className={`px-4 py-2 border-r transition-colors ${activeTab === 'detail' ? 'bg-orange-50 text-orange-600 font-medium' : 'hover:bg-gray-50'}`} onClick={() => setActiveTab('detail')} > - {t('productDetail')} + {t('productModel')}