【问题标题】:List tags within a specific category in Jekyll在 Jekyll 中列出特定类别中的标签
【发布时间】:2014-06-24 16:10:56
【问题描述】:

我正在将我的 Wordpress 博客迁移到 Jekyll,到目前为止我非常喜欢它。新站点中的当前设置是这样的:

  • 使用category 区分两种类型的帖子(例如,博客和作品集)
  • 照常使用tag

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

据我所知,Liquid 支持循环访问网站中的所有标签,如下所示:

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

但我想将范围限制为特定类别,并希望做这样的事情:

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

我们将不胜感激。

【问题讨论】:

    标签: jekyll liquid


    【解决方案1】:

    这似乎适用于所有类型的过滤器,如类别或其他前沿变量 - 比如“类型”,所以我可以有类型:文章或类型:视频,如果我把它似乎只从其中一个中获取标签在“哪里”部分。

    {% 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] 包含所有其他内容。

    最初我使用 if zz != null 或 if zz != "" 但它们都不起作用。

    【讨论】:

    • 这个解决方案非常清晰。我希望我可以再给你一票。
    • 为我工作,使用category[0] 替换为"Photoshop"
    • 如果它不起作用,请更新 Jekyll gem,因为“where”过滤器仅适用于 Jekyll 3.2 及更高版本。
    【解决方案2】:

    这会起作用,它只会列出类别“X”的帖子上的标签。将 X 替换为类别名称。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-30
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-05
      相关资源
      最近更新 更多