From fe2bc3c188bdbc11c119adf8800fdfabf508be27 Mon Sep 17 00:00:00 2001 From: MattIPv4 Date: Fri, 20 Jun 2025 17:53:41 +0100 Subject: [PATCH 1/3] feat(blog): external canonical for syndicated posts --- apps/site/next.dynamic.mjs | 3 ++- apps/site/pages/en/blog/announcements/mikeal.md | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/site/next.dynamic.mjs b/apps/site/next.dynamic.mjs index a7e3467a4f123..484789acaae1f 100644 --- a/apps/site/next.dynamic.mjs +++ b/apps/site/next.dynamic.mjs @@ -230,7 +230,8 @@ const getDynamicRouter = async () => { ]; // Default canonical URL for the page - pageMetadata.alternates.canonical = getUrlForPathname(locale, path); + pageMetadata.alternates.canonical = + data.canonical ?? getUrlForPathname(locale, path); // Default alternate URL for the page in the default locale pageMetadata.alternates.languages['x-default'] = getUrlForPathname( diff --git a/apps/site/pages/en/blog/announcements/mikeal.md b/apps/site/pages/en/blog/announcements/mikeal.md index 5db87eca46b5d..14eb2de2ca94b 100644 --- a/apps/site/pages/en/blog/announcements/mikeal.md +++ b/apps/site/pages/en/blog/announcements/mikeal.md @@ -4,6 +4,7 @@ category: announcements title: 'In Memory of Mikeal Rogers: A Builder of Communities' layout: blog-post author: Robin Bender Ginn +canonical: https://openjsf.org/blog/in-memory-of-mikeal-rogers --- ![][mikeal-rogers-image] From 0be2d27a56cc06aa702fa9f9208a0f3fc893834d Mon Sep 17 00:00:00 2001 From: MattIPv4 Date: Fri, 20 Jun 2025 18:14:23 +0100 Subject: [PATCH 2/3] docs(frontmatter): external canonical for syndicated posts --- docs/adding-pages.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/adding-pages.md b/docs/adding-pages.md index d44fbf8e691b0..d46c75ea3a8ce 100644 --- a/docs/adding-pages.md +++ b/docs/adding-pages.md @@ -63,6 +63,10 @@ The frontmatter (YAML block at the top) configures page metadata: - `description`: Optional meta description for SEO - `authors`: For learn pages, list of GitHub usernames +Where content has been syndicated from another source, you can also include: + +- `canonical`: The original URL of the content + ### 3. Choose the Appropriate Layout Available layouts are defined in `apps/site/layouts/`, and mapped in `components/withLayout`. From b1c3fbc6eedcf5f24bfc30eab8ed9ed5bba5a7f6 Mon Sep 17 00:00:00 2001 From: Matt Cowley Date: Fri, 20 Jun 2025 19:51:29 +0100 Subject: [PATCH 3/3] docs(frontmatter): clarify syndicated context Signed-off-by: Matt Cowley --- docs/adding-pages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/adding-pages.md b/docs/adding-pages.md index d46c75ea3a8ce..4cabf36ceaa25 100644 --- a/docs/adding-pages.md +++ b/docs/adding-pages.md @@ -63,7 +63,7 @@ The frontmatter (YAML block at the top) configures page metadata: - `description`: Optional meta description for SEO - `authors`: For learn pages, list of GitHub usernames -Where content has been syndicated from another source, you can also include: +In cases where content has been syndicated from another source, you should also include: - `canonical`: The original URL of the content