January 19, 2017

为 Jekyll 设置多个 post 文件

将博客迁移到 Jekyll 大半年后,对它基本熟悉了起来。Jekyll 最基本的目录结构是

.
├── _config.yml
├── _data
|   └── members.yml
├── _includes
|   ├── footer.html
|   └── header.html
├── _layouts
|   ├── default.html
|   └── post.html
├── _posts
|   ├── 2017-01-19-hello-world.md
├── _sass
|   ├── _base.scss
|   └── _layout.scss
└── index.html  # Or index.md
└── about.html # Or about.md

这其中,比较重要的文件/文件夹有:

  • _config.yml:配置文件,填写一些配置信息
  • _includes:在其中添加一些可以在 _layout_posts 中复用的文件。
  • _layouts:模板文件,_post 中使用 YAML Front Matter 使用这些模板文件。
  • _posts:所有文章都放在这里,注意 文章有特定的文件命名规则,使用 Markdown 格式,并以 YAML Front Matter 作为开头。

但是在这种基本配置中,所有的文章都放在_posts这一个文件夹中。不过,我一直很想将我的文章分成多个文件夹,这样可以实现在不同的页面,显示不同文件夹中的文章,方便管理、归类和查看。尝试了很多方法后,参考了一篇博文,终于成功配置了出来。方法是这样的:

首先,重新整理目录。如果我想设置两个分类文件,分别是 blog1blog2,那么目录结构变成:

.
├── _config.yml
├── _data
|   └── members.yml
├── _includes
|   ├── footer.html
|   └── header.html
├── _layouts
|   ├── default.html
|   └── post.html
|── blog1
|   ├──index.html
|   ├──_posts
|   |   ├──2017-01-19-hello-world.md
|── blog2
|   ├──index.html
|   ├──_posts
|   |   ├──2017-01-19-another-blog.md
├── _sass
|   ├── _base.scss
|   └── _layout.scss
└── index.html
└── about.html

接着,在 Yaml Front Matter 制定不同分类的 category,比如将 category 设为 blog1 或者 blog2

---
layout: post
category: blog1
title: 'Hello World'
date: 2017-01-19
---

然后,在 /blog1/blog2 路径以及根目录下的 index.html 中添加逻辑判断,变量的使用可以参见这篇及之后的文档。这一部分有很多内容,不过没太有时间仔细写了。


    {% for post in site.posts %}
      {% if post.categories contains 'blog' %}
          {% capture y %}{{post.date | date:"%Y"}}{% endcapture %}
        <li><span>{{ post.date | date_to_string }} &raquo;</span><a href="{{ post.url }}">{{ post.title }}</a></li>
      {% endif %}
    {% endfor %}
  

最后,打开 ‘xxx.com/blog1’ 和 ‘xxx.com/blog2’,就可以显示不同的文件文章了,根目录下的 index.html 也可以按心愿进行配置。可以查看我的根目录分类1,和分类2简单查看配置结果。

comments powered by Disqus