如何在第一页而不是“/blog”中显示我的帖子并维护其他子文件夹,如“/about”和“/projects”

How to show my posts in the first page and not in the "/blog" and maintaining other sub folders working like "/about" and "/projects"

我正在尝试使用 Lektor 作为我的博客平台,但我 运行 遇到了一些问题。

遵循 guide 我可以使一切正常。当我尝试将博客设为首页但没有“/blog”时,我的问题就开始了。

如果我在页面模板中查询博客子项,则分页不起作用。

如果我使用 "replaced_with = site.query('/blog')" 创建页面的 blog-post 子页面,初始页面呈现良好,但如果我尝试访问任何页面,则会出现“未找到”消息。

我的目标是在第一页显示我的 post,并在根文件夹中有其他文件夹,例如“/about”或“/projects”。

我遇到了同样的问题。我尝试了几件事,其中 none 成功了。

我最终进行了页面重定向。 Lektor 尚不支持重定向,它们是 working on it.

我创建了 home.html 以便它重定向到 /blog

<meta http-equiv="refresh" content="0; url=http://example.com/blog/" />

这已被 WWC 弃用。在 lektor 支持重定向之前,这是要走的路。

我明白了!方法是在页面模型的 "items" 键中设置查询。

像这样:

[model]
name = Page
label = {{ this.title }}
hidden = yes
protected = yes

[fields.title]
label = Title
type = string

[pagination]
enabled = yes
per_page = 10
items = site.query('/blog')

在那之后,它就像一个魅力。 :)

我就是这样做的。

[model]
name = Blog
label = {{ this.title }}
hidden = yes

[fields.title]
label = Title
type = string

[children]
model = blog-post
order_by = -pub_date, title

[pagination]
enabled = yes
per_page = 5
items = this.children.filter(F._model == 'blog-post')

我最近的用例有点不同。我不想要首页上的博客,而是 /about 的副本,使用的模板是 page.html.

因此,仅如 所示替换分页 items(N.B。我过去也将其用于博客)是行不通的。我需要替换我已经成功完成的整个 this 变量。

为了实现这一点,我在 page.html 模板的顶部(好吧,几乎是在 {% extends %} 行之后)添加了以下内容:

{% if this.path == '/' %}
  {% set this = site.get('/about') %}
{% endif %}

效果很好,我认为它更通用、更优雅。 我想,为了让它变得更好,我将 '/about' 放入数据包并从那里获取数据源。此外,我可以在数据包中包含 / = /about 的整个映射,以说明未指定数量的别名。