diff --git a/quartz/plugins/emitters/folderPage.tsx b/quartz/plugins/emitters/folderPage.tsx index 7eebb21c7..bf17774e3 100644 --- a/quartz/plugins/emitters/folderPage.tsx +++ b/quartz/plugins/emitters/folderPage.tsx @@ -76,12 +76,11 @@ export const FolderPage: QuartzEmitterPlugin> = (user const folders: Set = new Set( allFiles.flatMap((data) => { - const slug = data.slug - const folderName = path.dirname(slug ?? "") as SimpleSlug - if (slug && folderName !== "." && folderName !== "tags") { - return [folderName] - } - return [] + return data.slug + ? _getFolders(data.slug).filter( + (folderName) => folderName !== "." && folderName !== "tags", + ) + : [] }), ) @@ -133,3 +132,18 @@ export const FolderPage: QuartzEmitterPlugin> = (user }, } } + +function _getFolders(slug: FullSlug): SimpleSlug[] { + var folderName = _dirname(slug) + const parentFolderNames = [folderName] + + while (folderName !== ".") { + folderName = _dirname(folderName) + parentFolderNames.push(folderName) + } + return parentFolderNames +} + +function _dirname(slug: string | undefined): SimpleSlug { + return path.dirname(slug ?? "") as SimpleSlug +}