如何让 Jekyll 中的相关帖子生效?

How do I get related posts in Jekyll to work?

我想修改 here 找到的答案,但它似乎对我不起作用,因为它只会导致 "there are no related posts" 的重复语句。

原来没有相关帖子的时候什么都不显示,想改一下。同样,目前,使用我添加的 else 语句,它只显示 "there are no related posts" 3 次,我似乎无法弄清楚为什么。

如有任何帮助,我们将不胜感激。

{% assign maxRelated = 0 %}

{% assign minCommonTags =  3 %}

{% assign maxRelatedCounter = 0 %}

{% for post in site.posts %}

    {% assign sameTagCount = 0 %}
    {% assign commonTags = '' %}

    {% for tag in post.tags limit:1 %}

    {% if post.url != page.url %}
        {% if page.tags contains tag %}
        {% assign sameTagCount = sameTagCount | plus: 1 %}
        <a href="..{{ post.url | relative_url }}">{{ post.title }}</a>
        <p>{{ post.excerpt | strip_html | truncatewords:80 }}</p>
        {% assign commonTags = commonTags | append: tagmarkup %}
        {% else %}
        There are no related posts.
        {% endif %}

    {% endif %}
    {% endfor %}

    {% if sameTagCount >= minCommonTags %}

    {% assign maxRelatedCounter = maxRelatedCounter | plus: 1 %}
    {% if maxRelatedCounter >= maxRelated %}
        {% break %}
    {% endif %}
    {% endif %}

{% endfor %}

在 linked 的答案中没有 else 块,也没有输出,它只生成 commonTags。

{% for tag in post.tags %}
      {% comment %}---> Only compare if post is 
                        not same as current page {% endcomment %}
      {% if post.url != page.url %}
        {% if page.tags contains tag %}
          {% assign sameTagCount = sameTagCount | plus: 1 %}
          {% capture tagmarkup %} <span class="label label-default">{{ tag }}</span> {% endcapture %}
          {% assign commonTags = commonTags | append: tagmarkup %}
        {% endif %}
      {% endif %}
    {% endfor %}

如果 sameTagCount 大于或等于 minCommonTags,它会输出一个 link 作为 h5。

{% if sameTagCount >= minCommonTags %}
   <div>
     <h5><a href="{{ site.baseurl }}{{ post.url }}">{{ post.title }}{{ commonTags }}</a></h5>
   </div>
...

在您的情况下,如果条件 {% if page.tags contains tag %} 不成立,则输出 'There are no related posts.',这显然发生了三次。