按标签过滤帖子

标签 filter yaml jekyll octopress

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

相关文章:

docker - 如何修复我的 docker-compose.yml? - 预期 <block end>,但发现 '<block mapping start>'

arrays - 在 Rails 中从 yaml 构建数组

ruby - 在 ubuntu 14.04 上运行 jekyll 时出错

jekyll - 传递 Jekyll 变量 "up"范围

angularjs - ng重复内的 Angular ng重复过滤器

R:在两列和组中过滤两个 data.frames 中的重复值

filter - 事实级别的 MDX 过滤

r - 使用 "rticles"包时如何更改 RMarkdown 中的字体?

css - 更改 Jekyll Minima(默认)主题中的字体

json - 使用 _contains 过滤大于、小于和范围的 JSON 字段 django