feat: add sitemap.xml

closes #359
closes #438
This commit is contained in:
Mathias Schopmans
2024-03-15 13:42:26 +01:00
committed by Mathias Schopmans
parent 43513bb1ec
commit a8172e6579
5 changed files with 50 additions and 2 deletions

View File

@@ -70,6 +70,7 @@ Open the `config.json` file and configure the radar to your needs.
| Attribute | Description | | Attribute | Description |
| --------- | ------------------------------------------------------------------------------------------------------------------------------ | | --------- | ------------------------------------------------------------------------------------------------------------------------------ |
| basePath | Set if hosting under a sub-path, otherwise set it to `/`. Default is `/techradar` | | basePath | Set if hosting under a sub-path, otherwise set it to `/`. Default is `/techradar` |
| baseUrl | Set to the full URL, where the radar will be hosted. Will be used for sitemap.xml. `https://www.aoe.com/techradar` |
| toggles | (optional) Modify the behaviour and contents of the radar. See config below. | | toggles | (optional) Modify the behaviour and contents of the radar. See config below. |
| sections | (optional) Modify the order of sections (`radar`, `tags`, `list`) | | sections | (optional) Modify the order of sections (`radar`, `tags`, `list`) |
| colors | A map of colors for the radar. Can be any valid CSS color value | | colors | A map of colors for the radar. Can be any valid CSS color value |

View File

@@ -1,5 +1,6 @@
{ {
"basePath": "/techradar", "basePath": "/techradar",
"baseUrl": "",
"editUrl": "https://github.dev/AOEpeople/techradar/blob/main/radar/{release}/{id}.md", "editUrl": "https://github.dev/AOEpeople/techradar/blob/main/radar/{release}/{id}.md",
"toggles": { "toggles": {
"showChart": true, "showChart": true,

37
src/app/sitemap.ts Normal file
View File

@@ -0,0 +1,37 @@
import { MetadataRoute } from "next";
import { getAbsoluteUrl, getItems, getQuadrants } from "@/lib/data";
export default function sitemap(): MetadataRoute.Sitemap {
const quadrants = getQuadrants().map((quadrant) => ({
url: getAbsoluteUrl(`/${quadrant.id}/`),
lastModified: new Date(),
priority: 0.8,
}));
const items = getItems().map((item) => ({
url: getAbsoluteUrl(`/${item.quadrant}/${item.id}/`),
lastModified: new Date(),
priority: 0.5,
}));
return [
{
url: getAbsoluteUrl(),
lastModified: new Date(),
priority: 1,
},
{
url: getAbsoluteUrl("/overview/"),
lastModified: new Date(),
priority: 0.9,
},
{
url: getAbsoluteUrl("/help-and-about-tech-radar/"),
lastModified: new Date(),
priority: 0.9,
},
...quadrants,
...items,
];
}

View File

@@ -80,6 +80,10 @@ export function getImprintUrl() {
return config.imprint; return config.imprint;
} }
export function getAbsoluteUrl(path: string = "/") {
return `${config.baseUrl}${path}`;
}
export function getItem(id: string): Item | undefined { export function getItem(id: string): Item | undefined {
return data.items.find((item) => item.id === id) as Item; return data.items.find((item) => item.id === id) as Item;
} }

View File

@@ -14,8 +14,13 @@
"incremental": true, "incremental": true,
"paths": { "paths": {
"@/*": ["./src/*"] "@/*": ["./src/*"]
} },
"plugins": [
{
"name": "next"
}
]
}, },
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
"exclude": ["node_modules"] "exclude": ["node_modules"]
} }