Skip to content

Commit b56d8c7

Browse files
authored
Merge pull request #94 from joshtronic/main
fix: handle collections with hyphens for RSS
2 parents 68c29fd + 71bc984 commit b56d8c7

2 files changed

Lines changed: 27 additions & 1 deletion

File tree

‎src/virtualTemplate.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ ${stylesheet ? `<?xml-stylesheet href="${stylesheet}" type="text/xsl"?>\n` : ""}
2222
<description>{{ metadata.subtitle }}</description>
2323
<language>{{ metadata.language or page.lang }}</language>
2424
{%- if metadata.icon %}<image>{{ metadata.icon }}</image>{%- endif %}
25-
{%- for post in collections.${collection.name} | reverse | eleventyFeedHead(${collection.limit}) %}
25+
{%- for post in collections['${collection.name}'] | reverse | eleventyFeedHead(${collection.limit}) %}
2626
{%- set absolutePostUrl = post.url | htmlBaseUrl(metadata.base) %}
2727
<item>
2828
<title>{{ post.data.title }}</title>

‎test/virtualTemplatesTest.js‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,29 @@ test("RSS virtual templates plugin with `all`", async (t) => {
5050
let [ feed ] = results.filter(entry => entry.outputPath.endsWith(".xml"));
5151
t.truthy(feed.content.startsWith(`<?xml version="1.0" encoding="utf-8"?>`));
5252
});
53+
54+
test("RSS virtual templates plugin with hyphenated collection name", async (t) => {
55+
const { default: Eleventy } = await import("@11ty/eleventy");
56+
57+
let elev = new Eleventy("./test", "./test/_site", {
58+
config: function (eleventyConfig) {
59+
eleventyConfig.addTemplate("virtual.md", `# Hello`, { title: "Post Title", tags: ["posts-newest"] })
60+
61+
eleventyConfig.addPlugin(feedPlugin, {
62+
type: "rss", // or "atom", "json"
63+
outputPath: "/feed.xml",
64+
collection: {
65+
name: "posts-newest", // iterate over `collections.posts-newest`
66+
limit: 10, // 0 means no limit
67+
},
68+
});
69+
},
70+
});
71+
72+
let results = await elev.toJSON();
73+
74+
t.deepEqual(results.length, 2);
75+
let [ feed ] = results.filter(entry => entry.outputPath.endsWith(".xml"));
76+
t.truthy(feed.content.startsWith(`<?xml version="1.0" encoding="utf-8"?>`));
77+
t.true(feed.content.includes("<title>Post Title</title>"));
78+
});

0 commit comments

Comments
 (0)