我已将 Jekyll 插件复制到我的 Github 存储库中,以使用官方来源 ( https://github.com/recurser/jekyll-plugins ) 生成类别页面,但它不起作用,我继续获得 404 页面。也就是说,如果我在 Jekyll 服务器和 _site 目录中的本地计算机上进行测试,它就可以工作。有任何想法吗?
3 回答
GitHub Pages 不支持大多数插件。他们不希望幕后发生任何疯狂的事情。
这是我使用 Github Pages 进行分类的方法。它不是完全自动的,因为它需要为您要设置的每个类别创建一个单独的 .html 文件。但它在 Github Pages 上无需任何插件或魔法即可工作。
在您的根目录中创建一个 categoryname.html 文件。例如,hardware.html
对于硬件类别。对站点的所有帖子运行 for 循环并检查 post.category
<div class="posts">
{% for post in site.posts %}
{% assign author = site.authors[post.author] %}
{{ author.display_name }}
{% if post.category == 'Hardware' %}
<div class="post">
<h1 class="post-title">
<a href="{{ post.url }}">{{ post.title }}</a>
</h1>
{{ post.content }}
</div>
{% endif %}
{% endfor %}
</div>
在您的帖子中,您将使用YAML
标题将类别添加到帖子中。就像下面的代码:
---
layout: post
title: How We Built a Hardware Product
author: Author Name
category: Hardware
---
那应该这样做。它将创建一个/hardware/
页面,其中将包含您所有属于硬件类别的帖子。确保您的YAML
名称和类别名称区分大小写 ( hardware != Hardware and category != Category
)。
另一种可能的解决方案:
如果您不想在本地生成站点并将创建的 HTML 文件推送到 GitHub (就像 David Jacquel 在他的回答中建议的那样),您可以创建一个包含所有类别的单个页面。
查看这个答案:
在 jekyll 博客中支持标签的简单方法
(注意:我在那里使用标签而不是类别,但据我所知,两者在 Jekyll 中的工作方式完全相同。所以你可以拿我的代码并替换site.tags
为site.categories
)
我承认,每个类别一页看起来更好,但我的解决方案的优势在于它可以在 Github Pages 上运行(因为它只是 vanilla Liquid,没有插件)。
编辑:
与此同时,我写了一篇博客文章如何在不使用插件的情况下为每个类别制作单独的页面:
Separate pages per tag/category with Jekyll (without plugins)
如果要使用插件,则必须在本地生成站点并将其推送到 github 页面上。如果这样做,.nojekyll
请在存储库的根目录添加一个文件,告诉 github 不要处理您的文件。