-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfeed.11ty.js
37 lines (33 loc) · 918 Bytes
/
feed.11ty.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
const { escape } = require('html-escaper')
const { dateToRfc3339 } = require('@11ty/eleventy-plugin-rss')
function renderFeedItem({ title, url, date, postIntro }) {
return `
<entry>
<title>${escape(title)}</title>
<id>${url}</id>
<link href="${url}" rel="alternate" />
<published>${dateToRfc3339(new Date(date))}</published>
<updated>${dateToRfc3339(new Date(date))}</updated>
${postIntro ? `<summary>${escape(postIntro)}</summary>` : ''}
</entry>
`
}
module.exports = class Feed {
data() {
return {
pagination: {
data: 'feeds',
size: 1,
alias: 'feed',
addAllPagesToCollections: true,
},
tags: ['feeds'],
eleventyComputed: {
permalink: ({ feed }) => `/feeds/${feed.uniqueName}.xml`,
},
}
}
render({ feed }) {
return feed.posts.map((post) => renderFeedItem(post)).join('')
}
}