Add prev/next metadata on blog pages (#273)
* feat(web): add prev/next seo tags to blog
This commit is contained in:
committed by
GitHub
parent
a416695400
commit
406e683091
@@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user