【问题标题】:Exclude current page from for loop in Jekyll从 Jekyll 的 for 循环中排除当前页面
【发布时间】:2021-10-21 11:11:43
【问题描述】:

我正在使用 Jekyll v4.2.0 / Liquid 4.X,并希望创建基于页面的循环,该循环根据前端标签返回相关页面,但不包括当前页面。

我的页面前端问题降价如下所示:

---
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>

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

但是,我想为循环排除当前页面。

我已尝试使用unless-tag 解决此问题,但由于某种原因这没有返回任何内容。

<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>

更新:还根据这个问题Exclude current post from recent posts query in Jekyll? 尝试了where_exp,但这也没有返回任何内容。

<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-loop markdown jekyll liquid static-site


    【解决方案1】:

    自己解决了这个问题。将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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      • 2014-02-18
      • 2015-08-08
      • 1970-01-01
      相关资源
      最近更新 更多