从 Jekyll 中的 for 循环中排除当前页面

Exclude current page from for loop in Jekyll

我正在使用 Jekyll v4.2.0 / Liquid 4.X 并想创建基于页面的循环,该循环 return 根据前言标签关联页面,但不包括当前页面.

我的页面 front matter markdown 是这样的:

---
layout: test
title: Page about soda and chesse
permalink: /page-about-soda-and-cheese/
tags: soda, chesse
---

首先,我将标签拆分成一个数组,循环页面,然后使用 if 语句检查最多三个标签是否与其他页面上的标签字符串匹配。

{% assign page-tags = page.tags | split: "," %}

<ul>
  {% for page in site.pages %}
    {% if page.tags contains page-tags[0] or page.tags contains page-tags[1] or page.tags contains page-tags[2] %}
        <li><a href="{{ page.url }}">{{ page.title }}</a></li>
    {% endif %}
  {% endfor %}
</ul>

这正确 return 我网站上的以下页面:
/page-about-soda-and-cheese/
/page-about-cheese/
/page-about-soda/

但是,我想将当前页面排除在循环之外。

我试过用 unless-tag 解决这个问题,但由于某些原因 return 什么都没有。

<ul>
  {% for page in site.pages %}
    {% if page.tags contains page-tags[0] or page.tags contains page-tags[1] or page.tags contains page-tags[2] %}
      {% unless page.url == page.url %}
        <li><a href="{{ page.url }}">{{ page.title }}</a></li>
      {% endunless %}
    {% endif %}
  {% endfor %}
</ul>

更新:也尝试了 where_exp 基于这个问题 ,但这也没有 return 任何东西。

<ul>
{% assign pages = site.pages | where_exp:"page","page.url != page.url" %}
  {% for page in pages %}
    {% if page.tags contains page-tags[0] or page.tags contains page-tags[1] or page.tags contains page-tags[2] %}
      <li><a href="{{ page.url }}">{{ page.title }}</a></li>
    {% endif %}
{% endfor %}
</ul>

我自己解决了这个问题。将 for page 更改为 for related

{% assign page-tags = page.tags | split: "," %}

<ul>
  {% for related in site.pages %}
    {% if related.tags contains page-tags[0] or related.tags contains page-tags[1] or related.tags contains page-tags[2] %}
      {% if related.url != page.url %}
      <li><a href="{{ related.url }}">{{ related.title }}</a></li>
      {% endif %}
    {% endif %}
{% endfor %}
</ul>