【发布时间】:2023-03-09 13:45:01
【问题描述】:
我已将 Jekyll 插件用于使用官方来源 (https://github.com/recurser/jekyll-plugins) 生成类别页面到我的 Github 存储库中,但它不起作用,我继续获得 404 页面。也就是说,如果我在 Jekyll 服务器和 _site 目录中的本地机器上进行测试,它就可以工作。有什么想法吗?
【问题讨论】:
我已将 Jekyll 插件用于使用官方来源 (https://github.com/recurser/jekyll-plugins) 生成类别页面到我的 Github 存储库中,但它不起作用,我继续获得 404 页面。也就是说,如果我在 Jekyll 服务器和 _site 目录中的本地机器上进行测试,它就可以工作。有什么想法吗?
【问题讨论】:
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 在他的回答中建议的那样),您可以创建包含所有类别的单个页面强>。
查看这个答案:
An easy way to support tags in a jekyll blog
(注意:我在那里使用标签而不是类别,但据我所知,两者在 Jekyll 中的工作方式完全相同。所以你可以拿我的代码,用site.categories替换site.tags)
我承认,每个类别一个页面看起来更好,但我的解决方案的优势在于它可以在 Github 页面上运行(因为它只是 vanilla Liquid,没有插件)。
编辑:
同时,我写了一篇博文,如何使用插件在不使用的情况下为每个类别制作单独的页面:
Separate pages per tag/category with Jekyll (without plugins)
【讨论】:
Github pages only support a small number of Jekyll plugins.
如果您想使用您的插件,您必须在本地生成您的站点并将其推送到 github 页面上。如果您这样做,请在您的存储库的根目录中添加一个.nojekyll 文件,以告诉 github 不处理您的文件。
【讨论】: