Jekyll & Liquid: список выходных категорий с почтовым индексом?
Я как-то застрял и не нашел правильного пути для этого.
Я хочу вывести список категорий с количеством сообщений в каждой категории.
Я догадался: https://paste.xinu.at/dOLtod/
но мне так и не удалось получить реальный счет. Я пробовал так много способов, и ничего не работало, например, просматривая каждую почту и проверяя каждую категорию, если она равна {{category | first}}.
Вот код без счета:
<ul class="dropdown-menu">
{% for category in site.categories %}
<li class="camelize_me">
<a href="/tags/{{category | first}}/">
{{category | first }}
<span class="badge">
<!-- Post count here -->
</span>
</a>
</li>
{% endfor %}
</ul>
У кого-нибудь есть идея сделать это?
EDIT:
Решение: {{category | last}} имеет все мои сообщения, поэтому {{category | последняя | size}} отображает счетчик. Я получил помощь в IRC.:)
Ответы
Ответ 1
Я написал фрагмент кода, который не только показывает количество сообщений в каждой категории, но также перемещается к сообщениям определенной категории, которые были нажаты. Надеюсь, вы сочтете это полезным:
<ul class="tag-box inline">
{% assign tags_list = site.categories %}
{% if tags_list.first[0] == null %}
{% for tag in tags_list %}
<li><a href="#{{ tag }}">{{ tag | capitalize }} <span>{{ site.tags[tag].size }}</span></a></li>
{% endfor %}
{% else %}
{% for tag in tags_list %}
<li><a href="#{{ tag[0] }}">{{ tag[0] | capitalize }} <span>{{ tag[1].size }}</span></a></li>
{% endfor %}
{% endif %}
{% assign tags_list = nil %}
</ul>
{% for tag in site.categories %}
<h2 id="{{ tag[0] }}">{{ tag[0] | capitalize }}</h2>
<ul class="post-list">
{% assign pages_list = tag[1] %}
{% for post in pages_list %}
{% if post.title != null %}
{% if group == null or group == post.group %}
<li><a href="{{ site.url }}{{ post.url }}">{{ post.title }}<span class="entry-date"><time datetime="{{ post.date | date_to_xmlschema }}" itemprop="datePublished">{{ post.date | date: "%B %d, %Y" }}</time></a></li>
{% endif %}
{% endif %}
{% endfor %}
{% assign pages_list = nil %}
{% assign group = nil %}
</ul>
{% endfor %}
Ответ 2
Решение: {{ category | last }}
имеет все мои сообщения, поэтому {{ category | last | size }}
отображает счет. Я получил помощь в IRC.:)
Ответ 3
Постепенное улучшение по сравнению с ответом Хоссейна, который сортирует категории. Протестировано с Jekyll 3.3.1:
<h1 class='tag'>Blog Posts Sorted By Category</h1>
{% assign sorted_categories = site.categories | sort {|left, right| left[0] <=> right[0]} %}
{% for tag in sorted_categories %}
<h2 class='tag' id="{{ tag[0] }}">{{ tag[0] | capitalize }}</h2>
<ul class="post-list">
{% assign pages_list = tag[1] %}
{% for post in pages_list %}
{% if post.title != null %}
{% if group == null or group == post.group %}
<li><a href="{{ site.url }}{{ post.url }}">
<span class="entry-date"><time datetime="{{ post.date | date_to_xmlschema }}" itemprop="datePublished">{{ post.date | date: "%B %d, %Y" }}</time></span>
•
{{ post.title }}
</a></li>
{% endif %}
{% endif %}
{% endfor %}
{% assign pages_list = nil %}
{% assign group = nil %}
</ul>
{% endfor %}