From c7e72eb27339645649b455187ce0e8fa54fb8612 Mon Sep 17 00:00:00 2001 From: yuki Date: Thu, 16 Oct 2025 08:31:39 -0300 Subject: [PATCH] fix index files in english permalinks --- en/en.11tydata.js | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/en/en.11tydata.js b/en/en.11tydata.js index 5ef7d3f..5c4cce0 100644 --- a/en/en.11tydata.js +++ b/en/en.11tydata.js @@ -1,19 +1,21 @@ module.exports = { lang: "en", - permalink: data => { - // `data.page.filePathStem` is the input path without extension, starting with a leading slash - // e.g. "/en/index" or "/en/blog/test-post" - const stem = data.page.filePathStem; - if (stem === "/en/index") { - // For /en/index.md → /index.html - return "/index.html"; - } + permalink: (data) => { + // data.page.filePathStem: e.g., "/en/index", "/en/blog/index", "/en/blog/test-post" + let stem = data.page.filePathStem; + + // strip the leading /en/ prefix if (stem.startsWith("/en/")) { - // For /en/anything-else.md (including subfolders), remove only the first /en - // e.g. /en/blog/test-post → /en/blog/test-post/index.html - return `${stem.replace(/^\/en/, "")}/index.html`; + stem = stem.replace(/^\/en/, ""); } - // fallback: default 11ty behavior - return data.page.outputPath; + + // handle index files: If ends with /index, just use stem + /index.html → e.g., /blog/index.html + // this avoids appending extra /index.html if already ending in /index + if (stem.endsWith("/index")) { + return `${stem}.html`; // /blog/index.html + } + + // for non-index files: append /index.html for pretty URLs (e.g., /blog/test-post → /blog/test-post/index.html, URL /blog/test-post/) + return `${stem}/index.html`; } }; \ No newline at end of file