让Jekyll类别计数并链接到与其相关的帖子列表

时间:2015-12-29 16:15:22

标签: html jekyll blogs categories

我正在开发一个Jekyll项目。这是一个包含类别的帖子的博客。 我希望在右侧有一个侧边栏,列出与此类别相关的类别和帖子数量,并在点击类别本身时,列出与此类别相关的帖子。

现在,我成功地将类别列表与其计数相关,但不显示帖子。这是代码:

<ul class="tag-box inline">
{% assign tags_list = site.categories %}
  {% if tags_list.first[0] == null %}
    {% for tag in tags_list %}
      <a href="#{{ tag }}">{{ tag | capitalize }} <span>{{ site.tags[tag].size }}</span></a>
    {% endfor %}
  {% else %}
    {% for tag in tags_list %}
      <div><a href="#{{ tag[0] }}">{{ tag[0] | capitalize }} <span> ({{ tag[1].size }}) </span></a></div>
    {% endfor %}
  {% endif %}
{% assign tags_list = nil %}
</ul>

我正在寻找互联网上的一些解决方案,其中一些解释说我应该创建一个文件夹类别,并在此文件夹下尽可能多的文件夹和index.html的类别来显示类别。然而,这是很多重复的内容,我不知道这是否是最好的方法。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

由于您无法使用插件,因此您必须为每个类别创建一个页面。 为了避免重复内容,您可以借助布局链来进行分解。您的类别页面将使用category_index.html作为布局,其本身将使用default.html

边栏

<ul class="tag-box inline">
  {% for category in site.categories %}
    <div><a href="{{ site.baseurl }}/category/{{ category[0] }}">{{ category[0] | capitalize }} <span> ({{ category[1].size }}) </span></a></div>
  {% endfor %}
</ul>

如果您需要category/toto/等网址,则必须在permalink: pretty中设置_config.yml

类别页面:category / toto.html

---
layout: category_index
category: toto
---

就是这样。

_layouts / category_index.html

---
layout: default
---
<div class="home">
  <h1 class="page-heading">Posts in category : {{ page.category }}</h1>
  <ul class="post-list">
    {% for p in site.categories[page.category] %}
      <li>
        <h2><a href="{{ site.baseurl }}{{ p.url }}">{{ p.title }}</a></h2>
      </li>
    {% endfor %}
  </ul>
</div>