65 lines
1.7 KiB
TypeScript
65 lines
1.7 KiB
TypeScript
import type { Metadata } from 'next'
|
|
import { notFound } from 'next/navigation'
|
|
import SeoCategoryPage from '@/components/SeoCategoryPage'
|
|
import { getSpanishSeoPageBySlug, spanishSeoPageSlugs } from '@/lib/spanishSeoPages'
|
|
import { siteConfig } from '@/lib/site'
|
|
|
|
type SpanishSeoRouteProps = {
|
|
params: Promise<{ slug: string }>
|
|
}
|
|
|
|
export function generateStaticParams() {
|
|
return spanishSeoPageSlugs
|
|
.filter((slug) => slug !== 'comparar-google-lens')
|
|
.map((slug) => ({ slug }))
|
|
}
|
|
|
|
export async function generateMetadata({ params }: SpanishSeoRouteProps): Promise<Metadata> {
|
|
const { slug } = await params
|
|
if (slug === 'comparar-google-lens') {
|
|
notFound()
|
|
}
|
|
const profile = getSpanishSeoPageBySlug(slug)
|
|
|
|
if (!profile) {
|
|
return {}
|
|
}
|
|
|
|
return {
|
|
title: profile.metaTitle,
|
|
description: profile.metaDescription,
|
|
alternates: {
|
|
canonical: profile.canonical,
|
|
languages: {
|
|
es: profile.canonical,
|
|
'x-default': '/',
|
|
},
|
|
},
|
|
openGraph: {
|
|
title: profile.metaTitle,
|
|
description: profile.metaDescription,
|
|
url: `${siteConfig.domain}${profile.canonical}`,
|
|
type: 'website',
|
|
locale: 'es_ES',
|
|
images: [{ url: '/og-image.png', width: 1200, height: 630, alt: profile.metaTitle }],
|
|
},
|
|
twitter: {
|
|
card: 'summary_large_image',
|
|
title: profile.metaTitle,
|
|
description: profile.metaDescription,
|
|
images: ['/og-image.png'],
|
|
},
|
|
}
|
|
}
|
|
|
|
export default async function SpanishSeoRoute({ params }: SpanishSeoRouteProps) {
|
|
const { slug } = await params
|
|
const profile = getSpanishSeoPageBySlug(slug)
|
|
|
|
if (!profile) {
|
|
notFound()
|
|
}
|
|
|
|
return <SeoCategoryPage profile={profile} />
|
|
}
|