import Banner from "@/components/banner/Banner"; import Category from "@/components/sidebar/Category"; import Pagination1 from "@/components/common/Pagination1"; import { getSiteSettings } from "@/utlis/siteSettings"; import ListPageTemplate from "@/components/common/ListPageTemplate"; import { notFound } from 'next/navigation'; const baseSlug = 'products'; export const revalidate = 3600; export async function generateMetadata({ params }) { const slugArr = [baseSlug, ...(params.slug ? (Array.isArray(params.slug) ? params.slug : [params.slug]) : [])]; const res = await fetch(`${process.env.SITE_URL}/api/get-page-data`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ slug_list: slugArr }) }); const json = await res.json(); const { data, error, page_info } = json; if (error) { return { title: error.title || 'Page Error', description: error.message || '', }; } if (Array.isArray(data) && page_info) { return { title: page_info.meta_title || page_info.title || '', description: page_info.meta_description || '', }; } return { title: data?.meta_title || data?.title || '', description: data?.meta_description || '', }; } export default async function Page({ params, searchParams }) { const slugArr = [baseSlug, ...(params.slug ? (Array.isArray(params.slug) ? params.slug : [params.slug]) : [])]; const currentPage = Number(searchParams?.page) || 1; const siteSettings = await getSiteSettings(process.env.SITE_URL); const pageSize = Number(siteSettings.page_size) || 12; const res = await fetch(`${process.env.SITE_URL}/api/get-page-data`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ slug_list: slugArr, page: currentPage, page_size: pageSize }) }); const result = await res.json(); const { data, error, total } = result; if (error) { notFound(); } const bannerComponentName = 'Banner-' + baseSlug; const categoryComponentName = 'Category-' + baseSlug; if (Array.isArray(data)) { const currentPath = '/' + [baseSlug, ...(params.slug ? (Array.isArray(params.slug) ? params.slug : [params.slug]) : [])].join('/'); const totalPages = Math.ceil((total || 0) / pageSize); const listItems = data.map(item => ({ slug: item.slug, title: item.title, image: item.image || item.cover || item.img || '', content: item.content || item.description || '', })); return ( <>
); } else if (data) { return ( <>
{/* 图片和附加信息并排显示,响应式优化 */} {(data.image || data.subtitle) && (
{data.image && (
{data.title}
)} {data.subtitle && (
{data.subtitle}
)}
)} {/* Product Description 标题 */}
Product Description
{data.additional_content && ( <> {/* Testing Report 标题 */}
Testing Report
)}
); } else { notFound(); } }