Files
fad-trade-next/app/sitemap.ts
砂糖 450337a019 refactor(about): 重构关于页面路由为静态路径
将关于页面的查询参数路由改为静态路径结构,如/about/company
更新i18n消息中的链接路径
添加新的[section]页面处理逻辑
优化静态生成参数和错误处理
2025-12-11 09:10:41 +08:00

48 lines
1.3 KiB
TypeScript

import { siteConfig } from '@/config/site'
import { DEFAULT_LOCALE, LOCALES } from '@/i18n/routing'
import { getPosts } from '@/lib/getBlogs'
import { MetadataRoute } from 'next'
const siteUrl = siteConfig.url
type ChangeFrequency = 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never' | undefined
export const dynamic = "force-static"
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
// Static pages
const staticPages = [
'',
'/blog',
'/about',
'/privacy-policy',
'/terms-of-service',
]
// Generate multilingual pages
const pages = LOCALES.flatMap(locale => {
return staticPages.map(page => ({
url: `${siteUrl}${locale === DEFAULT_LOCALE ? '' : `/${locale}`}${page}`,
lastModified: new Date(),
changeFrequency: 'daily' as ChangeFrequency,
priority: page === '' ? 1.0 : 0.8,
}))
})
const blogPosts = await Promise.all(
LOCALES.map(async (locale) => {
const { posts } = await getPosts(locale)
return posts.map(post => ({
url: `${siteUrl}${locale === DEFAULT_LOCALE ? '' : `/${locale}`}/blog${post.slug}`,
lastModified: post.metadata.updatedAt || post.date,
changeFrequency: 'daily' as const,
priority: 0.7,
}))
})
).then(results => results.flat())
return [
...pages,
...blogPosts,
]
}