如何按作者对帖子进行分页
Posted
技术标签:
【中文标题】如何按作者对帖子进行分页【英文标题】:How to paginate posts by author 【发布时间】:2019-01-15 13:47:12 【问题描述】:我想要做什么
我们知道 Jekyll 可以使用诸如 tags
和 categories
之类的前沿变量,并使用 site.tags
和 site.categories
访问它们以使用液体迭代它们。
现在我的问题是我不能使用像author
(如site.authors
)这样的自定义前端变量来执行此操作,因为 Jekyll 不会以列表格式存储它。这使得分页变得非常困难。
问题
我看过的每个解决方案,即
how to handle multiple authors in Jekyll
adding authors to Jekyll
jekyll-author
要求我将作者列表硬编码为_config.yml
或其他.yml
(即_data/authors.yml
)。
这里的问题是我没有使用固定的作者列表。当我在另一篇带有前置标签author: exampleAuthor
或作者列表的帖子中添加作者列表时需要更新作者列表(如每个帖子有多个作者,目前只有categories
和tags
才有可能) , 在服务器运行时。它可以出色地处理标签和类别,但不适用于作者等自定义标签。
最简单的解决方案是使用 site.authors
列表进行迭代,然后使用 ruby 插件对其进行扩展。
我还没有找到可以为我提供解决方案的插件,我认为这是一个常见问题,我可能不是第一个遇到的问题。
我尝试了什么
然后我考虑编写自己的 ruby 插件(由于缺乏文档,这很难靠自己。也许我对谷歌很笨,但我发现的资源非常有限,几乎不足以指导你完成过程)但必须有一个原因为什么这很难做到,这使得所有现有的解决方案都需要在.yml
(或.json
)中对作者列表进行硬编码,但大多数人会选择.yml
原因)。
这样做对我来说是不可能的,因为我只想在稍后加入带有作者姓名的帖子并操纵.yml
(我的印象是yml
files 不会被编译一旦服务器启动,如_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文件。无需重新启动服务器。我不知道.yml
s 是否可以这样做,因为_config.yml
没有重新编译for technical reasons。在示例方面,我想对作者进行分页。你的意思是什么,例如?不难想象我的意思。你对杰基尔了解多少?没有冒犯。
我猜你说“没有冒犯”是因为你知道这很冒犯?请查看***.com/conduct 和jekyllrb.com/docs/usage
【参考方案1】:
使用 collections 可以轻松地将作者添加到 Jekyll 帖子中。 Here's a proof of concept for you。具体来说,在this commit 中,我添加了您需要的所有内容。
As for your question about pagination,需要使用分页插件(paginate-v2 很好),因为我相信内置分页只支持帖子集合。
【讨论】:
我也找到了关于收藏的建议,但同样,我需要将作者列表硬编码到_config.yml
,我根本做不到。我没有固定的作者名单。我有 70% 的把握在我的情况下收集是不可行的。 gh 链接已损坏 btw
我可能误解了您要完成的工作。请注意,在我的示例中,作者列表基于您放入集合中的任何内容,而不是配置中的内容。如果您的目标是根据每篇文章中的 author
值推断作者列表,并且希望它是 100% 动态的,我建议您编写一个插件。您需要映射帖子列表,提取作者,然后使用插件生成您需要的任何类型的数据。生成器示例是如何使用插件生成页面的一个很好的起点jekyllrb.com/docs/plugins/#generators
your commit 是私人仓库吗(它给了我一个 404 FSR)?我真的很想看看它并报告回来,而不是推测它。也欢迎顺便说一句。关于你加入***的时间
哎呀,我发誓我已经公开了。再看看。
我做了一些修改以添加一些功能,所以这里有一个更好的提交:github.com/cameronmcefee/jekyll-authors/commit/…以上是关于如何按作者对帖子进行分页的主要内容,如果未能解决你的问题,请参考以下文章
如何在 GatsbyJS 中对属于特定类别的帖子列表进行分页