3

我有一个新的 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 %}

但是它不太正确......标签标题列出了与每个帖子相关联的标签,这是我想要的,但在每个标签标题下,列出了所有帖子,而不仅仅是与该标签相关联的那些帖子......嗯。

如果您能指出正确的方向,请提前致谢。

4

1 回答 1

3

嗯,您可以尝试以下方法:

{% 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>部分。

希望有帮助!:)

于 2013-01-06T04:31:00.250 回答