Jekyll的Frontmatter自动化和类别排序

时间:2014-11-28 14:48:04

标签: sorting automation jekyll categories

我是Jekyll的新手,我正在一个网站上工作,我想要一个使用类别名称作为链接文本的导航菜单。但是,我不希望猫的名字按字母或顺序排序,但顺序不同。我唯一能想到的是,在配置文件中定义一个哈希,如下所示:

cats:
  "a": "dogs"
  "b": "cats"
  "c": "spiders"
  "d": "jiraffes"

然后为导航我有这样的事情(请不要嘲笑这个noobie,他):

<ul>{% for cat_hash in site.cats %}{% for cat in cat_hash %}{% for page in site.pages %}{% if cat[1] == page.category %}
    <li><a href="{{ page.url | prepend: site.baseurl }}">{{ page.category }}</a></li>{% endif %}{% endfor %}{% endfor %}{% endfor %}
</ul>

现在,由于我在每个类别下都有很多页面,我想稍微自动化一下这个过程,所以我试图在前面的事情中使用液体代码:

---
layout: default
category: {{ site.cats["a"] }}
---

但当然这不起作用。我已搜索过SO并找到了使用插件的解决方案,但我不能在此网站上使用插件。有人有什么想法吗?我想做的是:

  • 按照我想要的任何顺序排序类别(不按字母顺序排列)。
  • 自动生成前项中的猫名称

提前谢谢。

1 个答案:

答案 0 :(得分:2)

可能的解决方案:

订购不是问题,我认为_config.yml似乎是这样做的。

问题是自动将页面与类别匹配,而不必在页面的前面写入类别名称。

我的想法是将类别与文件夹匹配。 cats文件夹中的任何文件都将被视为cats类别的一部分,然后会显示在右侧菜单中。

--cats
  |--cat1.md
  |--cat2.md
  |--
--dogs
  |--dog1.md
  |--dog2.md
  |--
--spiders
  |--spider1.md

然后可以稍微更改_config.yml以使文件夹名称与菜单中的显示匹配。

categories:
    dogs:
        display: Doggies
    cats:
        display: I love catz
    spiders:
        display: Spiders

现在,我们可以轻松地将页面与类别匹配,并在菜单中显示所有内容:

{% for cat in site.categories %}
  <h2>{{ cat[1].display }}</h2>
  <ul>
  {% for page in site.pages %}
    {% if page.dir contains cat[0] %}
      <li><a href="{{ page.url | prepend: site.baseurl }}">{{ page.title }}</a></li></li>
    {% endif %}
  {% endfor %}
  </ul>
{% endfor %}

Etvoilà!