57 lines
1.4 KiB
TypeScript
57 lines
1.4 KiB
TypeScript
import { MetadataRoute } from 'next';
|
|
import { productService } from '../lib/services/productService';
|
|
|
|
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
|
|
const baseUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://canina-iran.com';
|
|
|
|
// Static routes
|
|
const staticRoutes: MetadataRoute.Sitemap = [
|
|
{
|
|
url: `${baseUrl}`,
|
|
lastModified: new Date(),
|
|
changeFrequency: 'daily',
|
|
priority: 1,
|
|
},
|
|
{
|
|
url: `${baseUrl}/shop`,
|
|
lastModified: new Date(),
|
|
changeFrequency: 'daily',
|
|
priority: 0.9,
|
|
},
|
|
{
|
|
url: `${baseUrl}/wiki`,
|
|
lastModified: new Date(),
|
|
changeFrequency: 'weekly',
|
|
priority: 0.8,
|
|
},
|
|
{
|
|
url: `${baseUrl}/blog`,
|
|
lastModified: new Date(),
|
|
changeFrequency: 'weekly',
|
|
priority: 0.8,
|
|
},
|
|
{
|
|
url: `${baseUrl}/search`,
|
|
lastModified: new Date(),
|
|
changeFrequency: 'weekly',
|
|
priority: 0.5,
|
|
},
|
|
];
|
|
|
|
// Dynamic products
|
|
try {
|
|
const products = await productService.getProducts();
|
|
const productRoutes: MetadataRoute.Sitemap = products.map((product) => ({
|
|
url: `${baseUrl}/shop/${product.id}`,
|
|
lastModified: new Date(),
|
|
changeFrequency: 'weekly',
|
|
priority: 0.7,
|
|
}));
|
|
|
|
return [...staticRoutes, ...productRoutes];
|
|
} catch (error) {
|
|
console.error("Failed to generate product sitemap:", error);
|
|
return staticRoutes;
|
|
}
|
|
}
|