从 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>
我正在使用 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
基于这个问题
<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>