leDailySquirrel/eleventy.config.js

56 lines
2 KiB
JavaScript
Raw Normal View History

2026-07-04 19:25:31 +00:00
module.exports = function(eleventyConfig) {
// 1. Collection: All published editions, newest first
eleventyConfig.addCollection("publishedEditions", function(collectionApi) {
return collectionApi.getFilteredByGlob("content/editions/*/index.md")
.filter(item => item.data.status === "published")
.sort((a, b) => b.date - a.date); // Sort descending
});
// 2. Collection: The current (newest) published edition for the index page
eleventyConfig.addCollection("currentEdition", function(collectionApi) {
const published = collectionApi.getFilteredByGlob("content/editions/*/index.md")
.filter(item => item.data.status === "published")
.sort((a, b) => b.date - a.date);
return published.length > 0 ? [published[0]] : [];
});
// 3. Layout aliases so you don't have to type the full path in front matter
eleventyConfig.addLayoutAlias("edition", "layouts/edition.njk");
eleventyConfig.addLayoutAlias("article", "layouts/article.njk");
eleventyConfig.addLayoutAlias("base", "layouts/base.njk");
2026-07-04 19:55:57 +00:00
// 4. Force UTC date formatting to fix the 5-hour timezone shift
eleventyConfig.addFilter("newsDate", function(dateObj) {
return new Date(dateObj).toLocaleDateString('en-US', {
timeZone: 'UTC',
weekday: 'long',
month: 'long',
day: 'numeric',
year: 'numeric'
});
});
eleventyConfig.addFilter("roman", function(num) {
const lookup = {M:1000,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1};
let roman = '';
for (let i in lookup) {
while (num >= lookup[i]) {
roman += i;
num -= lookup[i];
}
} return roman; }
);
module.exports = function(eleventyConfig) {
2026-07-04 19:25:31 +00:00
return {
dir: {
input: "content",
includes: "../_includes", // Keeps templates safely outside the content dir
output: "dist"
},
templateFormats: ["md", "njk", "html"]
};
};