import Banner from "@/components/banner/Banner"; import Category from "@/components/sidebar/Category"; import { getSiteSettings } from "@/utils/data"; import { notFound } from 'next/navigation'; import DynamicListPage from "@/components/common/DynamicListPage"; import { Suspense } from 'react'; import { getPageData } from "@/utils/data"; import ProductImageGallery from "@/components/products/ProductImageGallery"; const LoadingSpinner = () => (
); export const revalidate = 3600; export async function generateMetadata({ params }) { const resolvedParams = await params; const slug = resolvedParams.slug || []; const slugArr = Array.isArray(slug) ? slug : [slug]; const { data, error, page_info } = await getPageData({ slug_list: slugArr }); const siteSettings = await getSiteSettings(); const siteTitle = siteSettings.site_title || ''; const siteName = siteSettings.site_name || ''; const siteNameInPageTitles = siteSettings.site_name_in_page_titles || 'None'; let title = ''; if (error) { title = error.title || 'Page Error'; return { title, description: error.message || '', }; } if (Array.isArray(data) && page_info) { title = page_info.meta_title || page_info.title || ''; if (siteName && title) { if (siteNameInPageTitles === 'After') { title = `${title} - ${siteName}`; } else if (siteNameInPageTitles === 'Before') { title = `${siteName} - ${title}`; } } return { title, description: page_info.meta_description || '', }; } title = data?.meta_title || data?.title || ''; if (siteName && title) { if (siteNameInPageTitles === 'After') { title = `${title} - ${siteName}`; } else if (siteNameInPageTitles === 'Before') { title = `${siteName} - ${title}`; } } return { title, description: data?.meta_description || '', }; } export default async function Page({ params, searchParams }) { const resolvedParams = await params; const slug = resolvedParams.slug || []; const slugArr = Array.isArray(slug) ? slug : [slug]; const siteSettings = await getSiteSettings(); const pageSize = Number(siteSettings.page_size) || 12; const { data, error, total } = await getPageData({ slug_list: slugArr, page: 1, page_size: pageSize, downloadFiles: true, }); if (error) { notFound(); } const pageSlugBase = slugArr.length ? slugArr[slugArr.length - 1] : ''; const bannerComponentName = `Banner-${pageSlugBase}`; const categoryComponentName = `Category-${pageSlugBase}`; if (Array.isArray(data)) { const currentPath = '/' + slugArr.join('/'); const listColumns = 4; return ( <>
}>
); } else if (data) { return ( <>
{/* 图片和附加信息并排显示,响应式优化 */} {(data.image || data.subtitle) && (
{/* 图片轮播区块 */}
{/* 产品标题 */} {data.title && (

{data.title}

)} {/* 产品副标题 */} {data.subtitle && (
{data.subtitle}
)}
)} {/* 内容区域 */}
); } else { notFound(); } }