From 02300f99202f5e083bfe7d3625b03426db2695b2 Mon Sep 17 00:00:00 2001 From: Kevin Yank Date: Sat, 2 May 2026 21:15:55 +1000 Subject: [PATCH 1/2] Fix config collection ordering for imported layouts --- src/TemplateMap.js | 16 +++++++++++++++ test/Issue4182Test.js | 46 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 test/Issue4182Test.js diff --git a/src/TemplateMap.js b/src/TemplateMap.js index afec1fb30..9e601b753 100644 --- a/src/TemplateMap.js +++ b/src/TemplateMap.js @@ -278,6 +278,7 @@ class TemplateMap { ); await this.initDependencyMap(fullTemplateOrder); + await this.refreshUserConfigCollections(fullTemplateOrder); await this.resolveRemainingComputedData(); let orderedPaths = this.#removeTagsFromTemplateOrder(fullTemplateOrder); @@ -467,6 +468,21 @@ class TemplateMap { return result; } + async refreshUserConfigCollections(templateOrder = []) { + for (let entry of templateOrder) { + if (!GlobalDependencyMap.isCollection(entry)) { + continue; + } + + let tagName = GlobalDependencyMap.getTagName(entry); + if (!this.isUserConfigCollectionName(tagName)) { + continue; + } + + await this.setCollectionByTagName(tagName); + } + } + populateCollectionsWithContent() { for (let collectionName in this.collectionsData) { // skip custom collections set in configuration files that have arbitrary types diff --git a/test/Issue4182Test.js b/test/Issue4182Test.js new file mode 100644 index 000000000..cda8e0f63 --- /dev/null +++ b/test/Issue4182Test.js @@ -0,0 +1,46 @@ +import test from "ava"; +import Eleventy from "../src/Eleventy.js"; + +test("#4182 addCollection consuming a tagged collection should not run before tag publishers", async (t) => { + let elev = new Eleventy("test/noop", false, { + config(eleventyConfig) { + eleventyConfig.setLayoutsDirectory("_layouts"); + eleventyConfig.addCollection("primaryNav", (collectionApi) => { + return collectionApi.getFilteredByTag("primary"); + }); + + eleventyConfig.addTemplate( + "_layouts/base.liquid", + `{% for item in collections.primaryNav %}{{ item.url }} {% endfor %}{{ content }}`, + { + eleventyImport: { + collections: ["primaryNav"], + }, + }, + ); + + eleventyConfig.addTemplate("news.liquid", "News", { + tags: ["primary"], + permalink: "/news/", + layout: "base.liquid", + }); + + eleventyConfig.addTemplate("venue.liquid", "Venue", { + tags: ["primary"], + permalink: "/venue/", + layout: "base.liquid", + }); + + eleventyConfig.addTemplate("index.liquid", "Home", { + layout: "base.liquid", + }); + }, + }); + + let results = await elev.toJSON(); + let homepage = results.find((entry) => entry.url === "/"); + + t.truthy(homepage); + t.true(homepage.content.includes("/news/")); + t.true(homepage.content.includes("/venue/")); +}); From 0c36e49e05e42e3e9cf5d3bb295dc2dbd017fdc4 Mon Sep 17 00:00:00 2001 From: Kevin Yank Date: Sat, 2 May 2026 21:23:42 +1000 Subject: [PATCH 2/2] Use generic names in Issue4182 regression test --- test/Issue4182Test.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/Issue4182Test.js b/test/Issue4182Test.js index cda8e0f63..049e584cc 100644 --- a/test/Issue4182Test.js +++ b/test/Issue4182Test.js @@ -19,15 +19,15 @@ test("#4182 addCollection consuming a tagged collection should not run before ta }, ); - eleventyConfig.addTemplate("news.liquid", "News", { + eleventyConfig.addTemplate("blog.liquid", "Blog", { tags: ["primary"], - permalink: "/news/", + permalink: "/blog/", layout: "base.liquid", }); - eleventyConfig.addTemplate("venue.liquid", "Venue", { + eleventyConfig.addTemplate("about.liquid", "About", { tags: ["primary"], - permalink: "/venue/", + permalink: "/about/", layout: "base.liquid", }); @@ -41,6 +41,6 @@ test("#4182 addCollection consuming a tagged collection should not run before ta let homepage = results.find((entry) => entry.url === "/"); t.truthy(homepage); - t.true(homepage.content.includes("/news/")); - t.true(homepage.content.includes("/venue/")); + t.true(homepage.content.includes("/blog/")); + t.true(homepage.content.includes("/about/")); });