在pages/tutorials.html中,你的{% assign categories = site.tutorials | group_by:"category" | sort: "category-weight" %}肯定不行。
由于category-weight 不是site.tutorials 文档中的键,排序过滤器将静默失败。
节省一些输入
我们可以通过根据文档路径定义默认变量来避免在教程前面设置类别。
让我们改变 _tutorials 组织:
_tutorials
├── advanced
│ ├── adding-next-previous-to-blog.md
│ └── ...
├── getting-started
│ ├── getting-started-with-jekyll.md
│ └── ...
└── setup
├── jekyll-on-windows-2.md
└── ...
在_config.yml 中添加一些默认值:
defaults:
- ...
- { scope: { path: "_tutorials/advanced" }, values: { category: "Advanced" } }
- { scope: { path: "_tutorials/getting-started" }, values: { category: "Getting started" } }
- { scope: { path: "_tutorials/setup" }, values: { category: "Setup" } }
为教程类别顺序创建参考
在_config.yml,添加
# this is used to display tutorials in the right categories order
# be sure to match default category names defined in site.defaults
tutorials-categories:
- "Setup"
- "Getting started"
- "Advanced"
请注意,将类别顺序从 pages/tutorials.html 移动到 _config.yml 是为了集中配置。它有助于在默认设置和类别顺序之间保持同步。
让我们以正确的类别顺序显示我们的 tutos
在pages/tutorials 中,我们可以这样做:
{% assign categories = site.tutorials | group_by:"category" %}
{% comment %} ++++++++++++++++++++++++++
We loop site.tutorials-categories to sort categories in a defined order
++++++++++++++++++++++++++ {% endcomment %}
{% for category in site.tutorials-categories %}
{% assign current-category = categories | where:"name", category | first %}
{% assign category-tutorials = current-category.items %}
<h2>{{ category }}</h2>
<ul>
{% for item in category-tutorials %}
<li><a href="{{ site.baseurl }}{{ item.url }}">{{ item.title }}</a></li>
{% endfor %}
</ul>
{% endfor %}