Qgoda 分页

问题描述 投票:0回答:1

我已将博客从 Jekyll 迁移到 Qgoda,现在我想对列表页面进行分页,以便页面上只显示固定数量的帖子。我还想为类别、标签和年份创建这些列表(用于存档)。并且只能显示与列表页面语言相同的帖子。

如何创建附加页面?我需要为它们每个人准备一个 Markdown 文件吗?

如何创建这些页面的链接?

我知道这一定是可能的,因为我在演示文稿中看到过它,但文档似乎没有解释它。

static-site template-toolkit qgoda
1个回答
1
投票

分页尚未记录。试试这个:

[% USE q = Qgoda %]
[% posts = q.list('date.year'=2018 lingua=asset.lingua type='post').nsortBy('date').reverse() %]
[% start = asset.start || 0 %]
[% asset.start = 0 %]
[% p = q.paginate(start = start total = posts.size per_page = 10) %]
[%- FOREACH post IN posts.splice(p.start, p.per_page) -%]
  <a href="[% post.permalink %]">[% post.title | html %]</a><br />
[%- END -%]
<a href="[% p.previous_link %]">Newer</a>
<a href="[% p.next_link %]">Older</a>
[%- IF p.next_start -%]
  [% q.clone(location = p.next_location start = p.next_start) %]
[%- END -%]
[% USE Dumper %]<pre>[% Dumper.dump(p) %]</pre>

在第 2 行中,您将所需的过滤器组合传递给模板方法

q.list()
。在这种情况下,您将获得 2018 年的资产,其语言与列表本身相同,并且类型为“post”。您总是必须对它们进行排序(在本例中按日期),并且可能将它们反转以首先列出最新的帖子。

方法

q.paginate()
是一个辅助方法。它的命名参数是
start
表示起始页,
total
表示集合中的文档总数。结果是包含您需要的所有预先计算值的哈希值。

FOREACH
循环中,您迭代
posts
,但使用标准模板工具包 v 方法
splice()
剪切出所需的窗口。

对于“较新”和“较旧”链接的目标,您可以使用上面

q.paginate()
生成的预先计算值。

最后,如果还有更多页面 (

p.next_start
),您可以使用
q.clone()
克隆当前页面。该方法创建当前文档的精确副本,但会覆盖作为参数传递的那些属性。您总是必须覆盖克隆的
location
,这里还有
start
页,将是 10, 20, 30, ...

最后一行吐出了

q.paginate()
Dumper.dump()
的完整结果。这只是为了调试,以便您可以看到预先计算的其他值。

您可以简化收集文件的方式:

[% posts = q.list('date.year'=2018 lingua=asset.lingua type='post') %]
[% posts = q.llist('date.year'=2018 type='post') %]
[% posts = q.llistPosts('date.year'=2018) %]

这三个调用产生完全相同的结果,但冗长程度有所减少。

您可以在

https://github.com/gflohr/qgoda-multilang/blob/master/_views/components/listing.html
https 找到真实世界的示例(具有必要的 IF 和更多功能) ://github.com/gflohr/qgoda-site/blob/master/_views/components/listing.html.

© www.soinside.com 2019 - 2024. All rights reserved.