如何按作者对帖子进行分页

Posted

技术标签:

【中文标题】如何按作者对帖子进行分页【英文标题】:How to paginate posts by author 【发布时间】:2019-01-15 13:47:12 【问题描述】:

我想要做什么

我们知道 Jekyll 可以使用诸如 tagscategories 之类的前沿变量,并使用 site.tagssite.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 或作者列表的帖子中添加作者列表时需要更新作者列表(如每个帖子有多个作者,目前只有categoriestags 才有可能) , 在服务器运行时。它可以出色地处理标签和类别,但不适用于作者等自定义标签。

最简单的解决方案是使用 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。在示例方面,我想对作者进行分页。你的意思是什么,例如?不难想象我的意思。你对杰基尔了解多少?没有冒犯。 我猜你说“没有冒犯”是因为你知道这很冒犯?请查看***.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/…

以上是关于如何按作者对帖子进行分页的主要内容,如果未能解决你的问题,请参考以下文章

php 在按作者姓名搜索时,展开WP搜索以按作者显示帖子

如何在 GatsbyJS 中对属于特定类别的帖子列表进行分页

使用URL参数在firebase中对博客帖子进行数字分页的正确方法是什么?

iOS Firebase 按日期分页

如何计算一个类别和作者的帖子数量

Firebase Javascript:按降序对帖子进行分页