如何在Eleventy中设置全局默认永久链接(permalink)?
Eleventy 全局统一 permalink 配置(支持按需覆盖)
方法1:通过全局数据文件实现
在项目根目录的_data文件夹下新建一个全局数据文件(比如defaults.js),写入以下代码:
module.exports = { permalink: (data) => `${data.page.filePathStem}.html` };
所有页面会自动继承这个permalink规则,无需在每个模板的前置元数据中重复编写。
方法2:通过.eleventy.js配置全局计算字段(推荐,支持优先级覆盖)
直接在Eleventy的核心配置文件.eleventy.js中添加全局计算逻辑,优先使用页面自定义的permalink,无自定义时自动应用全局规则:
module.exports = function(eleventyConfig) { // 添加全局计算数据 eleventyConfig.addGlobalData('eleventyComputed', { permalink: function(data) { // 页面自定义permalink优先 if (data.permalink) return data.permalink; // 全局默认规则 return `${data.page.filePathStem}.html`; } }); return { // 你的其他Eleventy配置(比如输入输出目录等) }; };
按需覆盖全局规则
如果某页面需要使用自定义的permalink,直接在该页面的前置元数据中声明即可,全局配置会自动优先使用页面的自定义值:
--- permalink: "custom-page.html" # 其他页面元数据 ---
注意事项
page.filePathStem指的是模板文件相对于Eleventy输入目录的路径(不含文件扩展名),比如src/blog/post.njk的filePathStem为blog/post,最终会生成blog/post.html,和你之前的单页面生成逻辑完全一致。
内容的提问来源于stack exchange,提问作者John Moore
相关产品推荐
相关产品推荐

