如何在jekyll中显示标签并获取标签以点击进入所有相关的收集帖子

时间:2019-02-19 15:20:01

标签: tags jekyll

我希望在边栏中显示我的收藏帖子中的所有标签,并让每个标签都单击到所有相关帖子。我还想显示使用标签的次数:

标签名(10)

这是我目前拥有的所有标签列表,但是我不知道如何获取标签以点击进入所有相关页面并显示尺寸。

<ul class="">
    {% assign tags =  site.vacancies | map: 'tags' | join: ','  | split: ',' | uniq %}
     {% for tag in tags %}
        <li class="text-capitalize">
            <a href="{{ tag }}" class="sidebar-tag">{{ tag }}</a>
        </li>
     {% endfor %}
 </ul>

2 个答案:

答案 0 :(得分:0)

因此,有一种方法可以通过创建一组标签数组,同时遍历集合中的帖子并使用大量液体来实现这一点,因此我决定采取自己的解决方法。

我有一个我使用的所有标签的主列表,存储在/_data/tagList.yml中。每个标签都有一个名称和子标签,并且您可以根据需要添加更多字段,例如描述。我遍历tagList中的数据,并为每个标签有一个指向专用页面的链接,该页面列出了包含该标签的所有帖子。

如果您遵循Jekyll docs并在前面使用了tags,并且在命名标签方面始终如一,那么您可以使用site.tags[tag.name] | size过滤器来计算帖子带有该标签。

此解决方法的缺点是:

  • 您每次制作新标签时都需要更新tagList.yml
  • 您需要为该标签创建一个新页面(没什么大不了的,因为您可以只复制/粘贴其他标签页面中的代码并更改所需的标签)
  • 您需要确保在命名和使用标签方面保持一致
//   /_data/tagList.yml
- name: Coding
  slug: coding

- name: UnpopularOpinion
  slug: unpopular-opinion
//   /_posts/2019-01-01-example.html
---
tags: [Coding, UnpopularOpinion]
---
//   /blog/tags.html
{% for tag in site.data.tagList %}
    <div>
        <h2><a href="/blog/tags/{{tag.slug}}.html">{{tag.name}}</a></h2>
        {% assign postCount = site.tags[tag.name] | size %}
        <em>
            {% if postCount == 1 %}
                {{postCount}} post
            {% else %}
                {{postCount}} posts
            {% endif %}
        </em>
    </div>
{% endfor %}
//   /blog/tags/coding.html
{% assign numPosts = site.tags.Coding | size %}
{% if numPosts == 0 %}
    <p>No posts have this tag...yet.</p>
{% endif %}

{% for post in site.tags.Coding %}
    ...code to display a post...
{% endfor %}

答案 1 :(得分:0)

首先,使用Jekyll Variables提供的// hide the two child <select> document.querySelectorAll("#w_lmg, #w_marks").forEach( function(item) { item.style.display = "none"; } ); 将所有标签检索到列表中

site.tags

其次,获得每个Tag的链接及其相应的帖子数

{% capture site_tags %}{% for tag in site.tags %}{{ tag | first }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
{% assign tags_list = site_tags | split:',' | sort_natural %}

第三,显示每个标签的名称及其帖子的名称和日期。

<ul>
  {% for item in (0..site.tags.size) %}{% unless forloop.last %}
    {% capture this_word %}{{ tags_list[item] | strip_newlines }}{% endcapture %}
    <li><a href="#{{ this_word}}" class="tag"><span class="tag-name">{{ this_word }}</span> <span class="count">{{ site.tags[this_word].size }}</span></a></li>
  {% endunless %}{% endfor %}
</ul>