如何让 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.',这显然发生了三次。
我想修改 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.',这显然发生了三次。