-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path.eleventy.js
57 lines (51 loc) · 1.23 KB
/
.eleventy.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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
function sort(key) {
return function (a, b) {
return a.data[key] < b.data[key] ? -1 : 1;
};
}
function getNavigation(collection) {
const items = {};
// main navigation items
let _c = collection.filter((c) => !c.data.subkey);
for (let i in _c) {
const item = _c[i].data;
items[item.key] = {
title: item.title,
order: item.order,
url: item.page.url,
sub: [],
};
}
// sub items
_c = collection.filter((c) => c.data.subkey).sort(sort("title"));
for (let i in _c) {
const item = _c[i].data;
items[item.key].sub.push({
title: item.title,
url: item.page.url,
key: item.subkey,
});
}
return Object.entries(items).sort((a, b) =>
Math.sign(a[1].order - b[1].order)
);
}
function getSubitems(collection, key) {
return collection
.filter((c) => c.data.key === key && c.data.subkey)
.sort(sort("title"));
}
module.exports = (config) => {
config.addPassthroughCopy({ "./public/": "/" });
config.addFilter("navigation", getNavigation);
config.addFilter("subitems", getSubitems);
return {
markdownTemplateEngine: "njk",
dataTemplateEngine: "njk",
htmlTemplateEngine: "njk",
dir: {
input: "site",
output: "_site",
},
};
};