【发布时间】: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