From 9fc4e076bdd762c43ddb009ae062da293e03221a Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Sun, 2 Jun 2024 16:24:10 +1000 Subject: [PATCH] [docs] Add ability to redirect based on input path. --- builddefs/docsgen/.vitepress/theme/QMKLayout.vue | 16 ++++++++++++++-- docs/_aliases.json | 3 +++ 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 docs/_aliases.json diff --git a/builddefs/docsgen/.vitepress/theme/QMKLayout.vue b/builddefs/docsgen/.vitepress/theme/QMKLayout.vue index 30d0780d7c..563978bee3 100644 --- a/builddefs/docsgen/.vitepress/theme/QMKLayout.vue +++ b/builddefs/docsgen/.vitepress/theme/QMKLayout.vue @@ -2,11 +2,23 @@ import DefaultTheme from 'vitepress/theme' import { useRouter } from 'vitepress' import { onBeforeMount } from 'vue'; +import aliases from "../../../../docs/_aliases.json"; + const router = useRouter() onBeforeMount(async () => { - if (window.location.href.includes('/#/')) { - const newUrl = window.location.href.replace(/\/#\//, '/').replace(/\?id=/, '#'); + // Convert from docsify-style to vitepress-style URLs + let newUrl = window.location.href.replace(/\/#\//, '/').replace(/\?id=/, '#'); + + // Convert any aliases + let testUrl = new URL(newUrl); + if (testUrl.pathname in aliases) { + testUrl.pathname = aliases[testUrl.pathname]; + newUrl = testUrl.toString(); + } + + // Redirect if required + if (newUrl != window.location.href) { window.history.replaceState({}, '', newUrl); await router.go(newUrl); } diff --git a/docs/_aliases.json b/docs/_aliases.json new file mode 100644 index 0000000000..0a8e99e931 --- /dev/null +++ b/docs/_aliases.json @@ -0,0 +1,3 @@ +{ + "/feature_audio": "/features/audio" +}