diff --git a/server/modules/rendering/html-core/definition.yml b/server/modules/rendering/html-core/definition.yml index 5283547e..f8f5f3f0 100644 --- a/server/modules/rendering/html-core/definition.yml +++ b/server/modules/rendering/html-core/definition.yml @@ -5,4 +5,10 @@ author: requarks.io input: html output: html icon: mdi-language-html5 -props: {} +props: + absoluteLinks: + type: Boolean + default: false + title: Treat relative links as root absolute + hint: For example, a link to foo/bar on page xyz will render as /foo/bar instead of /xyz/foo/bar. + order: 1 diff --git a/server/modules/rendering/html-core/renderer.js b/server/modules/rendering/html-core/renderer.js index 9551d7f4..233ccf19 100644 --- a/server/modules/rendering/html-core/renderer.js +++ b/server/modules/rendering/html-core/renderer.js @@ -69,7 +69,11 @@ module.exports = { if (WIKI.config.lang.namespacing) { // -> Reformat paths if (href.indexOf('/') !== 0) { - href = (this.page.path === 'home') ? `/${this.page.localeCode}/${href}` : `/${this.page.localeCode}/${this.page.path}/${href}` + if (this.config.absoluteLinks) { + href = `/${this.page.localeCode}/${href}` + } else { + href = (this.page.path === 'home') ? `/${this.page.localeCode}/${href}` : `/${this.page.localeCode}/${this.page.path}/${href}` + } } else if (href.charAt(3) !== '/') { href = `/${this.page.localeCode}${href}` } @@ -83,7 +87,11 @@ module.exports = { } else { // -> Reformat paths if (href.indexOf('/') !== 0) { - href = (this.page.path === 'home') ? `/${href}` : `/${this.page.path}/${href}` + if (this.config.absoluteLinks) { + href = `/${href}` + } else { + href = (this.page.path === 'home') ? `/${href}` : `/${this.page.path}/${href}` + } } try {