import { Metadata } from 'next'; import Link from 'next/link'; import { Locale } from '../../../lib/i18n'; import { getTranslations } from '../../../lib/translations'; import { generateCanonicalUrl, generateAlternateLinks } from '../../../lib/seo-utils'; interface BlogPageProps { params: { locale: Locale; }; } export async function generateMetadata({ params }: BlogPageProps): Promise { const t = getTranslations(params.locale); const baseUrl = process.env.NEXT_PUBLIC_BASE_URL || 'https://your-domain.com'; const canonicalUrl = generateCanonicalUrl('/blog', params.locale, baseUrl); const alternateLinks = generateAlternateLinks('/blog', baseUrl); return { title: t.blog.title, description: t.blog.subtitle, alternates: { canonical: canonicalUrl, languages: Object.fromEntries(alternateLinks.map((link) => [link.hrefLang, link.href])), }, openGraph: { title: t.blog.title, description: t.blog.subtitle, url: canonicalUrl, type: 'website', }, }; } export default function BlogPage({ params }: BlogPageProps) { const t = getTranslations(params.locale); // 获取所有博客文章 const blogPosts = [ { id: 'featured', ...t.blog.posts.featured, image: 'featured', featured: true, }, { id: 'post1', ...t.blog.posts.post1, image: 'post1', featured: false, }, { id: 'post2', ...t.blog.posts.post2, image: 'post2', featured: false, }, { id: 'post3', ...t.blog.posts.post3, image: 'post3', featured: false, }, { id: 'post4', ...t.blog.posts.post4, image: 'post4', featured: false, }, { id: 'post5', ...t.blog.posts.post5, image: 'post5', featured: false, }, ]; const getCategoryColor = (category: string) => { switch (category) { case 'playerStories': return 'bg-amber-500'; case 'development': return 'bg-green-500'; case 'ecoFacts': return 'bg-emerald-500'; default: return 'bg-blue-500'; } }; const getCategoryName = (category: string) => { switch (category) { case 'playerStories': return t.blog.categories.playerStories; case 'development': return t.blog.categories.development; case 'ecoFacts': return t.blog.categories.ecoFacts; default: return category; } }; const getImageGradient = (imageId: string) => { const gradients = { featured: 'from-purple-500 via-blue-500 to-indigo-600', post1: 'from-amber-500 via-orange-500 to-red-500', post2: 'from-cyan-500 via-blue-500 to-indigo-500', post3: 'from-green-500 via-emerald-500 to-teal-500', post4: 'from-pink-500 via-rose-500 to-red-500', post5: 'from-violet-500 via-purple-500 to-indigo-500', }; return gradients[imageId as keyof typeof gradients] || 'from-gray-500 to-gray-600'; }; const featuredPost = blogPosts.find((post) => post.featured); const regularPosts = blogPosts.filter((post) => !post.featured); return (
{/* Hero Section */}

{t.blog.title}

{t.blog.subtitle}

{/* Category Filter */}
{/* Featured Post */} {featuredPost && (

{t.blog.featured}

{/* Featured Post Image */}
{/* Animated particles */}
{[...Array(8)].map((_, i) => (
))}
{getCategoryName(featuredPost.category)}
{t.blog.featured}
{/* Featured Post Content */}
{featuredPost.author} {featuredPost.date} {featuredPost.readTime}

{featuredPost.title}

{featuredPost.excerpt}

{t.blog.readMore}
)} {/* Regular Posts Grid */}

{t.blog.categories.all}

{regularPosts.map((post) => (
{/* Post Image */}
{/* Mini particles */}
{[...Array(4)].map((_, i) => (
))}
{getCategoryName(post.category)}
{/* Post Content */}
{post.author} {post.readTime}

{post.title}

{post.excerpt}

{post.date} {t.blog.readMore}
))}
{/* Newsletter Subscription */}

{t.blog.stayUpdated}

{t.blog.stayUpdatedDesc}

); }