列出杰基尔特定类别中的标签

时间:2014-05-07 15:24:18

标签: jekyll liquid

我正在将我的Wordpress博客迁移到Jekyll,到目前为止我对此非常喜欢。新网站中的当前设置如下:

  • 使用category来区分两种类型的帖子(例如,博客和投资组合)
  • 正常使用tag

现在的挑战是在tags中显示所有category,因为我想为两种类型的帖子创建两个单独的标记云。

据我所知,Liquid支持循环遍历网站中的所有代码:

{% for tag in site.tags %}
    {{ tag | first }}
{% endfor %}

但我想将范围限制在特定类别,我希望这样做:

{% for tag in site['category'].tags %}
    {{ tag | first }}
{% endfor %}

任何建议都将受到赞赏。

2 个答案:

答案 0 :(得分:8)

这似乎适用于所有类型的过滤器,如类别或其他前端变量 - 例如" type"所以我可以有类型:文章或类型:视频,如果我把它放在'其中'一部分。

{% assign sorted_tags = site.tags | sort %}
{% for tag in sorted_tags %}
{% assign zz = tag[1] | where: "category", "Photoshop" | sort %}
{% if zz != empty %}

<li><span class="tag">{{ tag[0] }}</span>
<ul>
  {% for p in zz %}
  <li><a href="{{ p.url }}">{{ p.title }}</a></li>
  {% endfor %}
 </ul>
 </li>
 {% endif %}

 {% endfor %}

zz只是用来过滤第一个标签[0]以上的东西,因为它似乎只有标签本身,所以你可以用它过滤其他任何东西。 tag [1]包含所有其他内容。

最初我使用的是zz!= null或zz!=&#34;&#34;但他们都没有工作。

答案 1 :(得分:0)

这将有效,它将仅列出类别'X'的帖子上的标签。将X替换为类别名称。

{% for post in site.categories['X'] %}
{% for tag in post.tags %}

   {{ tag  }}

{% endfor %}
{% endfor %}