Add prev/next metadata on blog pages (#273)

* feat(web): add prev/next seo tags to blog
This commit is contained in:
Giancarlo Buomprisco
2025-06-09 20:55:43 +07:00
committed by GitHub
parent a416695400
commit 406e683091

View File

@@ -1,5 +1,7 @@
import { cache } from 'react'; import { cache } from 'react';
import type { Metadata } from 'next';
import { createCmsClient } from '@kit/cms'; import { createCmsClient } from '@kit/cms';
import { getLogger } from '@kit/shared/logger'; import { getLogger } from '@kit/shared/logger';
import { If } from '@kit/ui/if'; import { If } from '@kit/ui/if';
@@ -17,12 +19,27 @@ interface BlogPageProps {
searchParams: Promise<{ page?: string }>; searchParams: Promise<{ page?: string }>;
} }
export const generateMetadata = async () => { const BLOG_POSTS_PER_PAGE = 10;
const { t } = await createI18nServerInstance();
export const generateMetadata = async (
props: BlogPageProps,
): Promise<Metadata> => {
const { t, resolvedLanguage } = await createI18nServerInstance();
const searchParams = await props.searchParams;
const limit = BLOG_POSTS_PER_PAGE;
const page = searchParams.page ? parseInt(searchParams.page) : 0;
const offset = page * limit;
const { total } = await getContentItems(resolvedLanguage, limit, offset);
return { return {
title: t('marketing:blog'), title: t('marketing:blog'),
description: t('marketing:blogSubtitle'), description: t('marketing:blogSubtitle'),
pagination: {
previous: page > 0 ? `/blog?page=${page - 1}` : undefined,
next: offset + limit < total ? `/blog?page=${page + 1}` : undefined,
},
}; };
}; };
@@ -53,8 +70,8 @@ async function BlogPage(props: BlogPageProps) {
const { t, resolvedLanguage: language } = await createI18nServerInstance(); const { t, resolvedLanguage: language } = await createI18nServerInstance();
const searchParams = await props.searchParams; const searchParams = await props.searchParams;
const limit = BLOG_POSTS_PER_PAGE;
const page = searchParams.page ? parseInt(searchParams.page) : 0; const page = searchParams.page ? parseInt(searchParams.page) : 0;
const limit = 10;
const offset = page * limit; const offset = page * limit;
const { total, items: posts } = await getContentItems( const { total, items: posts } = await getContentItems(