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

Eleventy 如何在通用文章模板中添加对应合集的全部内容查看链接

问题原因

你的代码存在两个核心问题导致判断失效:

  • 首先在post.html单篇文章模板的默认上下文中,没有post这个内置变量,Eleventy默认会把当前页面的属性暴露在page变量下,文章的前置元数据(比如标签、分类)是直接作为顶级变量暴露的。
  • 其次Nunjucks的in运算符判断对象是否属于数组时,依赖严格的引用相等,哪怕两个页面对象的内容完全一致,只要不是同一个内存引用就会返回false,所以用post in collections.A这种写法判断当前文章是否属于某个合集本身就不可靠。

修改方案

方案一:通过标签判断(更简单,推荐)

通常Eleventy的合集都是基于标签筛选生成的,如果你给合集A的文章统一加了A标签、合集B的文章统一加了B标签,直接用如下代码即可:

{% if 'A' in tags %}
<a href="/a">View all A posts</a>
{% elif 'B' in tags %}
<a href="/b">View all B posts</a>
{% endif %}

方案二:通过URL匹配(适合自定义合集的场景)

如果你是用自定义规则生成的A、B合集,没有绑定统一标签,可以通过匹配当前页面URL的方式判断归属:

{% if collections.A | map(attribute='url') | includes(page.url) %}
<a href="/a">View all A posts</a>
{% elif collections.B | map(attribute='url') | includes(page.url) %}
<a href="/b">View all B posts</a>
{% endif %}

这里先用map过滤器提取出合集中所有文章的URL,再用includes判断当前页面的URL是否在列表中,避免了对象引用匹配的问题。


内容的提问来源于stack exchange,提问作者Nick J.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:57:03