From 85c4c42bd601270d7be0f34a0767a34bb85e29bb Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Tue, 12 Dec 2023 18:50:03 +0100 Subject: refactor(hooks): rewrite useBreadcrumbs hook * use next/router to get the slug instead of using props * handle cases where the current page title is not provided * update JSON-LD schema to match the example in documentation * add tests --- src/pages/thematique/[slug].tsx | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) (limited to 'src/pages/thematique') diff --git a/src/pages/thematique/[slug].tsx b/src/pages/thematique/[slug].tsx index 6ab349d..f019341 100644 --- a/src/pages/thematique/[slug].tsx +++ b/src/pages/thematique/[slug].tsx @@ -33,7 +33,6 @@ import type { WPThematicPreview, } from '../../types'; import { CONFIG } from '../../utils/config'; -import { ROUTES } from '../../utils/constants'; import { getLinksItemData, getPostsWithUrl, @@ -44,7 +43,7 @@ import { } from '../../utils/helpers'; import { loadTranslation, type Messages } from '../../utils/helpers/server'; import { - useBreadcrumb, + useBreadcrumbs, useHeadingsTree, useThematic, useThematicsList, @@ -70,10 +69,9 @@ const ThematicPage: NextPageWithLayout = ({ data }) => { fallback: data.otherThematics, input: { first: data.totalThematics, where: { notIn: [thematic.id] } }, }); - const { items: breadcrumbItems, schema: breadcrumbSchema } = useBreadcrumb({ - title: data.currentThematic.title, - url: `${ROUTES.THEMATICS}/${data.currentThematic.slug}`, - }); + const { items: breadcrumbItems, schema: breadcrumbSchema } = useBreadcrumbs( + thematic.title + ); const { ref, tree } = useHeadingsTree({ fromLevel: 2 }); if (isFallback || isLoading) return ; @@ -97,7 +95,11 @@ const ThematicPage: NextPageWithLayout = ({ data }) => { slug, title, }); - const schemaJsonLd = getSchemaJson([webpageSchema, articleSchema]); + const schemaJsonLd = getSchemaJson([ + webpageSchema, + articleSchema, + breadcrumbSchema, + ]); const messages = { widgets: { @@ -154,12 +156,6 @@ const ThematicPage: NextPageWithLayout = ({ data }) => { // eslint-disable-next-line react/no-danger -- Necessary for schema dangerouslySetInnerHTML={{ __html: JSON.stringify(schemaJsonLd) }} /> -