Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion apps/site/next.dynamic.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
1 change: 1 addition & 0 deletions apps/site/pages/en/blog/announcements/mikeal.md
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
4 changes: 4 additions & 0 deletions docs/adding-pages.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

In cases where content has been syndicated from another source, you should 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`.
Expand Down
Loading