我有一个新的 Jekyll/Octopress 站点。
我做了一些定制:我将一个 category_list_tag.rb 文件(来自 Dan Watson)添加到插件文件夹以创建类别,然后复制 category_generator.rb 和 category_list_tag.rb 以创建 tag_generator.rb 和 tag_list_tag。 rb.
我现在有多种方法可以将帖子“分组”在一起,在侧边栏中,这一切都很好。
在每个帖子的底部,我现在想显示一个与相关帖子具有相同标签的帖子列表。
我还是个新手,正在学习所有这些,并设法破解了以下内容:
在 YAML Front Matter 中,我有以下内容:
---
title: "Preface"
date: 2012-09-02 18:30
layout: post
categories:
- Section 1
tags:
- Author
- About
- Publisher
---
在包含文件中,我在每篇文章的底部添加了以下内容:
<ul class="inline">
{% for tag in site.tags %}
<li><a href="{{ url_root }}#{{ tag[0] }}-ref">{{ tag[0] }} <span>({{ tag[1].size }})</span></a></li>
{% endfor %}
</ul>
<ul class="posts inline">
{% for tag in site.tags %}
<h5 id="{{ tag[0] }}-ref">{{ tag[0] }}</h5>
{% for post in tag[1] %}
<li><a href="{{ post.url }}" title="{{ post.title }}">{{ post.title }}</a></li>
{% endfor %}
{% endfor %}
</ul>
这当然会显示所有标签列出的所有帖子,这很好,但不是我想要的。
我如何重写它,以便只有与我所在的帖子具有相同标签的帖子才会列在帖子末尾?
这真的很困扰我,我似乎无法正确考虑。
更新:通过对上述代码片段进行以下更改,我已经解决了部分问题:
{% for tag in page.tags %}
<h5 id="{{ tag }}-ref">{{ tag }}</h5>
{% for post in site.posts reversed %}
<li><a href="{{ post.url }}" title="{{ post.title }}">{{ post.title }}</a></li>
{% endfor %}
{% endfor %}
但是它不太正确...标签标题列出了与每个帖子关联的标签,这是我想要的,但在每个标签标题下,列出了所有帖子,而不仅仅是与该标签关联的那些帖子.. . 嗯。
如果您能指出正确的方向,请提前致谢。
最佳答案
嗯,你可以尝试以下方法:
{% for tag in page.tags %}
<h5 id="{{ tag }}-ref">{{ tag }}</h5>
{% for post in site.posts reversed %}
{% if post.tags contains tag %}
<li><a href="{{ post.url }}" title="{{ post.title }}">{{ post.title }}</a></li>
{% endif %}
{% endfor %}
{% endfor %}
它将验证标签是否存在于帖子的标签数组中。如果是,它将打印 <li>...</li>
部分。
希望对您有所帮助! :)
关于按标签过滤帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14177520/