SEO optimizations
This commit is contained in:
@@ -61,7 +61,7 @@ export default function BeachClientPage({ config, turnstileSiteKey }: { config:
|
||||
<Image
|
||||
className="w-full max-w-62.5 md:max-w-75 relative drop-shadow-2xl transform hover:scale-105 transition-transform duration-500"
|
||||
src={matsommar}
|
||||
alt="Mat- & Sommarfesten"
|
||||
alt="Mat- och Sommarfesten Höganäs Logo"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -123,7 +123,7 @@ export default function BeachClientPage({ config, turnstileSiteKey }: { config:
|
||||
<p className="font-bold">{timeInfo.dateStr}</p>
|
||||
<p>{timeInfo.matchStr}</p>
|
||||
<p className="text-sm italic pt-3 border-t border-blue-100 mt-2">
|
||||
Samtidigt som <a target="_blank" rel="noreferrer" className="text-[#39979f] hover:underline" href={config.beachPage.festivalLink}>Höganäs Mat- & Sommarfest</a>
|
||||
Samtidigt som <a target="_blank" rel="noopener noreferrer" className="text-[#39979f] hover:underline" href={config.beachPage.festivalLink}>Höganäs Mat- & Sommarfest</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+77
-6
@@ -1,17 +1,88 @@
|
||||
// app/beach/page.tsx
|
||||
import { Metadata } from 'next';
|
||||
import { getConfig } from '../lib/config';
|
||||
import BeachClientPage from './BeachClientPage';
|
||||
|
||||
export const dynamic = 'force-dynamic';
|
||||
|
||||
export const metadata = {
|
||||
title: 'Beachturnering',
|
||||
};
|
||||
export async function generateMetadata(): Promise<Metadata> {
|
||||
const config = await getConfig();
|
||||
const matchDate = new Date(config.beachPage.matchStart);
|
||||
const year = matchDate.getFullYear();
|
||||
const dateFormatted = matchDate.toLocaleDateString('sv-SE', { day: 'numeric', month: 'long' });
|
||||
|
||||
const isClosed = config.beachPage.isClosedOverride;
|
||||
const title = isClosed
|
||||
? `Höganäs Beach Open ${year} (Fulltecknat)`
|
||||
: `Anmälan: Höganäs Beach Open ${year} - ${dateFormatted}`;
|
||||
|
||||
const description = isClosed
|
||||
? `Turneringen den ${dateFormatted} är nu fullbokad. Välkommen ner till Kvickbadet för att titta på beachvolleyboll i toppklass!`
|
||||
: `Välkommen till Höganäs Beach Open den ${dateFormatted}! Turneringsinfo, regler och anmälan för beachvolleyboll vid Kvickbadet.`;
|
||||
|
||||
return {
|
||||
title: title,
|
||||
description: description,
|
||||
openGraph: {
|
||||
title: title,
|
||||
description: description,
|
||||
url: 'https://lerbergetsvolleyboll.se/beach',
|
||||
siteName: 'Lerbergets Volleybollsällskap',
|
||||
locale: 'sv_SE',
|
||||
type: 'website',
|
||||
images: [
|
||||
{
|
||||
url: '/images/beach-tournament.webp',
|
||||
width: 1200,
|
||||
height: 630,
|
||||
alt: `Höganäs Beach Open ${year}`,
|
||||
},
|
||||
],
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
title: title,
|
||||
description: description,
|
||||
images: ['/images/beach-tournament.webp'],
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export default async function BeachPage() {
|
||||
const config = await getConfig();
|
||||
|
||||
const turnstileSiteKey = process.env.TURNSTILE_SITE_KEY || '';
|
||||
|
||||
return <BeachClientPage config={config} turnstileSiteKey={turnstileSiteKey} />;
|
||||
}
|
||||
const jsonLd = {
|
||||
'@context': 'https://schema.org',
|
||||
'@type': 'Event',
|
||||
'name': 'Höganäs Beach Open',
|
||||
'startDate': config.beachPage.matchStart,
|
||||
'location': {
|
||||
'@type': 'Place',
|
||||
'name': 'Kvickbadet',
|
||||
'address': {
|
||||
'@type': 'PostalAddress',
|
||||
'addressLocality': 'Höganäs',
|
||||
'addressCountry': 'SE',
|
||||
},
|
||||
},
|
||||
'eventStatus': config.beachPage.isClosedOverride
|
||||
? 'https://schema.org/EventScheduled'
|
||||
: 'https://schema.org/EventScheduled',
|
||||
'organizer': {
|
||||
'@type': 'Organization',
|
||||
'name': 'Lerbergets Volleybollsällskap',
|
||||
'url': 'https://lerbergetsvolleyboll.se'
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
|
||||
/>
|
||||
<BeachClientPage config={config} turnstileSiteKey={turnstileSiteKey} />
|
||||
</>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user