import ProductPage from "../../../components/ProductPage"; import { productService } from "../../../lib/services/productService"; import type { Metadata } from 'next'; import { Suspense } from 'react'; import { getSeoConfig, formatPageTitle } from "../../../lib/seo"; export async function generateMetadata( { params }: { params: Promise<{ slug: string }> } ): Promise { const resolvedParams = await params; const product = await productService.getProductBySlug(resolvedParams.slug); const config = await getSeoConfig(); if (!product) { return { title: formatPageTitle('مکمل درمانی یافت نشد', config.brandNameFa, config.titleSeparator, config.titlePosition), }; } const nameFa = product.nameFa || product.name; const nameEn = product.nameEn ? ` (${product.nameEn})` : ''; const rawTitle = `${nameFa}${nameEn}`; const title = formatPageTitle(rawTitle, config.brandNameFa, config.titleSeparator, config.titlePosition, false); const description = (product.shortDescription || product.description || '').substring(0, 155).trim() || config.defaultMetaDescription; const rawKeywords = (product as unknown as Record).keywords; const keywords = typeof rawKeywords === 'string' ? rawKeywords.split(',').map(k => k.trim()) : (product.main_ingredients || config.keywords); const canonicalUrl = `${config.canonicalBaseUrl.replace(/\/$/, '')}/shop/${resolvedParams.slug}`; return { title, description, keywords, openGraph: { title, description, images: [product.image || config.ogImageUrl], url: canonicalUrl, siteName: config.brandNameFa, type: "website", }, alternates: { canonical: canonicalUrl, } }; } export default async function ShopProductPage({ params }: { params: Promise<{ slug: string }> }) { const resolvedParams = await params; const product = await productService.getProductBySlug(resolvedParams.slug); if (!product) { return ; } const siteUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://canina.ir'; const productUrl = `${siteUrl}/shop/${resolvedParams.slug}`; const priceInRial = product.priceValue * 10; const productJsonLd = { '@context': 'https://schema.org', '@type': 'Product', name: product.nameFa || product.name, image: product.image, description: product.shortDescription || product.description, sku: product.artNo, mpn: product.artNo, brand: { '@type': 'Brand', name: 'Canina pharma GmbH' }, category: product.category, offers: { '@type': 'Offer', url: productUrl, priceCurrency: 'IRR', price: priceInRial, availability: 'https://schema.org/InStock', itemCondition: 'https://schema.org/NewCondition', seller: { '@type': 'Organization', name: 'کنینا ایران' } } }; const breadcrumbJsonLd = { '@context': 'https://schema.org', '@type': 'BreadcrumbList', itemListElement: [ { '@type': 'ListItem', position: 1, name: 'صفحه اصلی', item: siteUrl }, { '@type': 'ListItem', position: 2, name: 'فروشگاه مکمل‌ها', item: `${siteUrl}/shop` }, { '@type': 'ListItem', position: 3, name: product.nameFa || product.name, item: productUrl } ] }; const safeProductJsonLd = JSON.stringify(productJsonLd).replace(/