2014-01-06 2 views
13

Я как-то застрял и не нашел правильного пути для этого.Jekyll & Liquid: Вывести список категорий категорий с почтовым индексом?

Я хочу вывести список категорий с количеством сообщений в каждой категории.

Я получил это далеко: https://paste.xinu.at/dOLtod/

, но мне никогда не удавалось получить реальный счет. Я пробовал так много способов, и ничего не работало, например, просматривая каждую почту и проверяя каждую категорию, если она равна {{category | первый }}.

Вот код без подсчета:

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

Кто-нибудь идея, чтобы это было сделано?

+2

Если у вас есть ответ, отправьте его как ответ, а не как отредактируйте. – Darkhogg

+0

Я не могу сделать это примерно через 8 часов после сообщения, которое я думаю из-за моей репутации, а так как я здесь новый, у меня его нет. Я попытался, и я добавлю это как ответ позже. ;) – koffeingeladen

ответ

22

Я написали фрагмент кода, который не только показывает количество сообщений в каждой категории, но и переходит к сообщениям определенной категории, которые были нажаты. Я надеюсь, что вы найдете его полезным:

<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 %} 
+0

Есть ли способ отсортировать категории? Я попробовал '{% assign tags_list = site.categories | sort: "title"%} 'но не успел –

+0

будет работать над скриптом в jekyll3 как есть? – Sunil

12

{{ category | last }} имеет все мои сообщения, поэтому {{ category | last | size }} отображает счет. Я получил помощь в IRC. :)

+0

Это работает! Я не нашел решения Liquid Document. Но я нахожу его здесь! Спасибо, парень! – shen

1

инкрементного улучшение по сравнению с ответом Хоссейна, который сортирует категории. Протестировано с 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> 
      &bull; 
      {{ post.title }} 
     </a></li> 
     {% endif %} 
     {% endif %} 
    {% endfor %} 
    {% assign pages_list = nil %} 
    {% assign group = nil %} 
    </ul> 
{% endfor %} 
+0

Я думаю, что важно отметить, что это делает регистр с учетом регистра, где верхний регистр предшествует строчному регистру. Поэтому, если у вас есть категории «Яблоко», «Банан» и «Зебра», тогда он будет сортироваться как «Apple, Zebra, banana», который может быть не таким, каким вы хотите. – kimbaudi

+0

Это правда. Я позабочусь использовать желаемую капитализацию в своих тегах. Например: AWS, AI и все другие теги капитализируются. Работает хорошо! –

Смежные вопросы