-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy path.eleventy.js
More file actions
82 lines (70 loc) · 2.76 KB
/
.eleventy.js
File metadata and controls
82 lines (70 loc) · 2.76 KB
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
module.exports = function(eleventyConfig) {
// Pass through static assets
eleventyConfig.addPassthroughCopy("src/css");
eleventyConfig.addPassthroughCopy("src/images");
// Create practices collection
eleventyConfig.addCollection("practices", function(collectionApi) {
return collectionApi.getFilteredByGlob("src/practices/*/index.md").sort((a, b) => {
return a.data.title.localeCompare(b.data.title);
});
});
// Create pages collection
eleventyConfig.addCollection("pages", function(collectionApi) {
return collectionApi.getFilteredByGlob("src/pages/*.md");
});
// Create outputs collection
eleventyConfig.addCollection("outputs", function(collectionApi) {
return collectionApi.getFilteredByGlob("src/outputs/*.md").sort((a, b) => {
// Sort by citation (author name)
return a.data.citation.localeCompare(b.data.citation);
});
});
// Filter to get outputs by practice tag
eleventyConfig.addFilter("getOutputsByPractice", function(outputs, practiceSlug) {
return outputs.filter(output => {
return output.data.tags && output.data.tags.includes(practiceSlug);
});
});
// Filter to get practice title by slug
eleventyConfig.addFilter("getPracticeTitle", function(practices, slug) {
const practice = practices.find(p => p.data.slug === slug);
return practice ? practice.data.title : slug;
});
// Filter to get practice type by slug
eleventyConfig.addFilter("getPracticeType", function(practices, slug) {
const practice = practices.find(p => p.data.slug === slug);
return practice ? practice.data.type : null;
});
// Filter to count practices by discipline
eleventyConfig.addFilter("countByDiscipline", function(practices, discipline) {
return practices.filter(p => {
// Handle both disciplines (array) and discipline (singular)
const disciplines = p.data.disciplines || (p.data.discipline ? [p.data.discipline] : []);
return disciplines.includes(discipline);
}).length;
});
// Filter to count all practices
eleventyConfig.addFilter("countAll", function(practices) {
return practices.length;
});
// Filter to format date
eleventyConfig.addFilter("formatDate", function(dateStr) {
const date = new Date(dateStr);
const options = { day: 'numeric', month: 'long', year: 'numeric' };
return date.toLocaleDateString('en-GB', options);
});
// Get versions for a practice
eleventyConfig.addCollection("practiceVersions", function(collectionApi) {
return collectionApi.getFilteredByGlob("src/practices/*/versions/*.md");
});
return {
dir: {
input: "src",
output: "_site",
includes: "_includes",
layouts: "_layouts"
},
markdownTemplateEngine: "njk",
htmlTemplateEngine: "njk"
};
};