36 lines
1.1 KiB
JavaScript
36 lines
1.1 KiB
JavaScript
module.exports = {
|
|
eleventyComputed: {
|
|
permalink: function (data) {
|
|
// get the file path stem
|
|
let stem = data.page.filePathStem;
|
|
|
|
// extract the year from the path
|
|
const yearMatch = stem.match(/^\/es\/blog\/(\d{4})\//);
|
|
if (yearMatch) {
|
|
const year = yearMatch[1];
|
|
|
|
// check for slug_override first
|
|
if (data.slug_override) {
|
|
return `/es/blog/${year}/${this.slugify(data.slug_override)}/index.html`;
|
|
}
|
|
|
|
// handle blog posts with date prefix: /es/blog/[year]/[year-month-day]-slug
|
|
const blogPostMatch = stem.match(
|
|
/^\/es\/blog\/(\d{4})\/\d{4}-\d{2}-\d{2}-(.+)$/,
|
|
);
|
|
if (blogPostMatch) {
|
|
const [, , slug] = blogPostMatch;
|
|
return `/es/blog/${year}/${this.slugify(slug)}/index.html`;
|
|
}
|
|
}
|
|
|
|
// handle index pages or other non-blog-post pages
|
|
if (stem.endsWith("/index")) {
|
|
return `${stem}.html`; // ie /es/blog/index.html
|
|
}
|
|
|
|
// default for other pages under /es/blog/
|
|
return `${stem}/index.html`; // ie /es/other-page/index.html
|
|
},
|
|
},
|
|
};
|