我希望在侧边栏中显示我的收藏帖子中的所有标签,并让每个标签点击进入所有相关帖子。我还想显示标签的使用次数,如下所示:
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>
所以有一种方法可以通过创建一个标签数组来实现它,同时迭代集合中的帖子并使用大量的液体......我决定自己做一些解决方法。
我有一个包含我在/_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 %}
首先,使用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 %}