【发布时间】:2019-01-15 13:47:12
【问题描述】:
我想要做什么
我们知道 Jekyll 可以使用诸如 tags 和 categories 之类的前沿变量,并使用 site.tags 和 site.categories 访问它们以使用液体迭代它们。
现在我的问题是我不能使用像author(如site.authors)这样的自定义前端变量来执行此操作,因为 Jekyll 不会以列表格式存储它。这使得分页变得非常困难。
问题
我看过的每个解决方案,即
要求我将作者列表硬编码为_config.yml或其他.yml(即_data/authors.yml)。
这里的问题是我没有使用固定的作者列表。当我在另一篇带有前置标签author: exampleAuthor 或作者列表的帖子中添加作者列表时需要更新作者列表(如每个帖子有多个作者,目前只有categories 和tags 才有可能) , 在服务器运行时。它可以出色地处理标签和类别,但不适用于作者等自定义标签。
最简单的解决方案是使用 site.authors 列表进行迭代,然后使用 ruby 插件对其进行扩展。
我还没有找到可以为我提供解决方案的插件,我认为这是一个常见问题,我可能不是第一个遇到的问题。
我尝试了什么
然后我考虑编写自己的 ruby 插件(由于缺乏文档,这很难靠自己。也许我对谷歌很笨,但我发现的资源非常有限,几乎不足以指导你完成过程)但必须有一个原因为什么这很难做到,这使得所有现有的解决方案都需要在.yml(或.json)中对作者列表进行硬编码,但大多数人会选择.yml原因)。
这样做对我来说是不可能的,因为我只想在稍后加入带有作者姓名的帖子并操纵.yml(我的印象是ymlfiles 不会被编译一旦服务器启动,如_config.yml,如果我错了,请纠正我)会适得其反,因为它需要您重新启动服务器才能编译它们。
即使是像jekyll-paginate-v2 这样的非常高级的插件(我成功地使用它来按标签和类别对帖子进行分页)也没有解决这个as this issue portrays 的问题。有人建议他滥用类别变量按作者分页,这是一种绝望的解决方法。
我发现了可以通过集合来完成的建议,但这似乎并不可行。主要是由于其实施的性质:
他们需要对作者列表进行硬编码(再说一次,我不希望这样。我没有固定的作者列表。所有作者信息都必须来自/_posts 目录 .md 文件)
到目前为止,我不知道如何使用集合来完成。
不过我愿意接受建议。
编辑:我发现这个日期为issue on Jekylls github page,它强调人们正在尝试做同样的事情但无济于事。 这在过去 4 年里变得可行了吗?
【问题讨论】:
-
你能用你想要做什么的例子来更新这个问题吗?我不确定我的理解是否正确,但您似乎需要一个以作者用户名作为索引的
_data/authors.yml文件,然后在您的帖子中,您只需将作者用户名添加到前面的author属性中,然后每个帖子将有自己的作者元数据。 -
服务器运行时yml文件会更新吗?
-
例如? Jekyll 是一个静态网站生成器,静态部分意味着你必须手动更新它们。
-
一点也不。如果你在
_posts目录下添加帖子,服务器可以实时更新_site目录下的html文件。无需重新启动服务器。我不知道.ymls 是否可以这样做,因为_config.yml没有重新编译for technical reasons。在示例方面,我想对作者进行分页。你的意思是什么,例如?不难想象我的意思。你对杰基尔了解多少?没有冒犯。 -
我猜你说“没有冒犯”是因为你知道这很冒犯?请查看stackoverflow.com/conduct 和jekyllrb.com/docs/usage
标签: jekyll jekyll-extensions yaml-front-matter