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

问题描述 投票:0回答:2

我希望在侧边栏中显示我的收藏帖子中的所有标签,并让每个标签点击进入所有相关帖子。我还想显示标签的使用次数,如下所示:

tag_name(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>
tags jekyll
2个回答
0
投票

所以有一种方法可以通过创建一个标签数组来实现它,同时迭代集合中的帖子并使用大量的液体......我决定自己做一些解决方法。

我有一个包含我在/_data/tagList.yml中存储的所有标签的主列表。每个标记都有一个名称和slug,如果需要,您可以添加更多字段,如描述。我遍历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 %}

0
投票

首先,使用site.tags提供的Jekyll Variables将所有标签检索到列表中

{% 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>

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

{% for item in (0..site.tags.size) %}{% unless forloop.last %}
  {% capture this_word %}{{ tags_list[item] | strip_newlines }}{% endcapture %}
    <article id="{{ this_word }}">
    <h2 class="tag-heading tag-name">{{ this_word }}</h2>
        <ul>
    {% for post in site.tags[this_word] %}{% if post.title != null %}
      <li><a href="{{ site.url }}{{ post.url }}" title="{{ post.title }}" >{{ post.date | date: '%m/%d/%Y' }} ---- {{ post.title }}</a></li>
    {% endif %}{% endfor %}
        </ul>
    </article>
{% endunless %}{% endfor %}
© www.soinside.com 2019 - 2024. All rights reserved.