Таким образом, есть способ сделать это, создав массив тегов, итерируя по публикациям в коллекции и используя много жидкости ... и я решил сделать свой собственный обходной путь.
У меня есть мастерсписок всех тегов, которые я использую, хранится в /_data/tagList.yml
.Каждый тег имеет имя и слаг, и вы можете добавить больше полей, например описание, если хотите.Я перебираю данные в tagList
, и для каждого тега есть ссылка на выделенную страницу, на которой перечислены все сообщения, содержащие этот тег.
Если вы следовали документам Jekyll иВы использовали 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 %}