You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Eleventy(11ty)的include文件中访问JSON数据文件?

解决Eleventy中Render引入的Include无法获取全局数据的问题

1. 核对模板变量与循环语法

先确认navigation.html里的循环变量名和default.html完全一致,比如都是navigation,没有拼写错误(比如误写为nav、navItems)。示例正确循环代码:

<ul>
  {%- for item in navigation -%}
    <li><a href="{{ item.url }}">{{ item.text }}</a></li>
  {%- endfor -%}
</ul>

2. 替换为Liquid原生include标签

Eleventy的render标签默认会创建隔离的上下文,而Liquid原生的include标签会自动继承当前模板的所有上下文(包括_data下的全局数据)。把default.html中的引入代码改成:

{%- include 'navigation.html' -%}

3. 若保留render,显式传递数据

如果需要继续使用render标签(比如利用它的缓存或独立上下文特性),可以在调用时主动传递navigation全局数据:

{%- render 'navigation.html', navigation: navigation -%}

4. 验证数据目录配置

检查.eleventy.js中是否修改了默认数据目录,确保没有覆盖_data的配置。如果有类似以下代码,确认路径指向包含navigation.json的目录:

module.exports = function(eleventyConfig) {
  // 若存在此配置,确保路径正确
  // eleventyConfig.setDataDir("_data");
};

内容的提问来源于stack exchange,提问作者Katja Eichelberger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 20:48:25