Jekyll展示子分类的文章数量

4

我有一个使用Jekyll构建的网站,对于文章,我有3个子类别。

这些类别是: 博客 示例 技巧

在每个类别中,我还有html,css和js的子类别。

在每篇文章中,我都有前置元素和一个类别标签,例如:


categories: - 博客

- HTML

我想创建一个循环,输出每个类别的帖子计数。 所以如果在博客下我在每个子类别中都有2篇文章:

  • 博客
    • HTML
    • html-post1.md
    • html-post2.md
    • css
    • css-post1.md
    • css-post2.md
    • js
    • js-post1.md
    • js-post2.md

如何遍历它以仅显示计数而不是输出每篇文章?


我刚刚提交了一个答案,但我不确定它是否符合您的需求。您是想通过循环遍历类别来显示所有类别及其计数吗?我的解决方案可能有效,但可能需要稍作修改。请分享您目前拥有的任何代码,我可以尝试编辑我的答案。 - briancaffey
我正在尝试仅在它作为两个类别的一部分存在时显示类别计数。例如,如果作为博客的一部分,则要显示所有HTML帖子的计数。您可以在此处查看我的存储库:https://github.com/lmarzy/openbracket - marzy
2个回答

6
您可以直接按照以下方式循环遍历您网站的分类:
<ul>
{% for cat in site.categories %}
    <li>{{ cat[0] }} ({{ cat[1].size }})</li>
{% endfor %}
</ul>

cat[0]是分类的名称。
cat[1]是该分类下所有文章的数组,所以cat[1].size是文章数量。

生成的HTML将如下所示:

<ul>
    <li>HTML (2)</li>
    <li>css (2)</li>
    <li>js (2)</li>
</ul>

请注意,默认情况下,类别列表是无序的。
如果您想按名称或发布计数排序,解决方案稍微复杂一些

谢谢您的快速回复。这个几乎可以工作,但让我解释一下。所以在_posts下面,我有以下目录:博客 例子 提示在每一个这些目录中,我可能会有一个子目录,比如:html css js然后在每个.md文件中,我有以下内容:

类别: - 博客 - html

我想做的是当它是博客时,仅显示html帖子的计数,我可能还有另一个html类别,但在提示中,我不希望显示计数。如果有帮助的话,这里是GitHub链接:https://github.com/lmarzy/openbracket
- marzy

3

对于每个类别,您可以像这样包含一个计数:

  {% assign total = 0 %}
  {% for post in site.posts %}
     {% if post.category == "some_category" %}
      {% assign total = total | plus: 1 %}
     {% endif %}
  {% endfor %}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接