从模板渲染页面 object
Render a Page object from a template
在 Lektor 网站中,我遇到了以下问题:
- 我有一个名为
facts
的流程块,其中包含一个名为 facts.html
的相应模板
- 在该模板中,我搜索要显示的事实,如下所示:
{% for fact in site.get('/facts').children %}
- 这些 children 具有强加于它们的模型
fact
并且有相应的 fact.html
模板呈现它们
现在的问题是:如何在 facts.html
中呈现这些 child 页面?
我知道这可以通过将 fact.html
模板转换为可以从 facts.html
调用的宏来实现,但我希望有一种更优雅的方法来实现相同的结果。
页面 objects 是否有类似 render
的方法?
我不能完全理解你的设置。您说您有一个 .facts
类型的属性。但是,您对 /facts
执行查询以获取其子项,这表明这些是 sub-pages 而不是流块。所以..我不确定你想达到什么目的,但是:
您可以拥有 flow-blocks 的模板文件,您只需将它们放在例如 templates/blocks/fact.html
中即可。如果这样做,您可以只打印出流属性本身 (<div>{{ this.facts }}</div>
),并且所有个体 flow-blocks 都将使用流块模板绘制。
编辑:
您要求将另一个(完整)页面模板显示为 flow-block 类型:
{% set other = site.get('/projects') %}
{{ site.env.render_template('facts.html', pad=other.pad, this=other)|safe }}
在 Lektor 网站中,我遇到了以下问题:
- 我有一个名为
facts
的流程块,其中包含一个名为facts.html
的相应模板
- 在该模板中,我搜索要显示的事实,如下所示:
{% for fact in site.get('/facts').children %}
- 这些 children 具有强加于它们的模型
fact
并且有相应的fact.html
模板呈现它们
现在的问题是:如何在 facts.html
中呈现这些 child 页面?
我知道这可以通过将 fact.html
模板转换为可以从 facts.html
调用的宏来实现,但我希望有一种更优雅的方法来实现相同的结果。
页面 objects 是否有类似 render
的方法?
我不能完全理解你的设置。您说您有一个 .facts
类型的属性。但是,您对 /facts
执行查询以获取其子项,这表明这些是 sub-pages 而不是流块。所以..我不确定你想达到什么目的,但是:
您可以拥有 flow-blocks 的模板文件,您只需将它们放在例如 templates/blocks/fact.html
中即可。如果这样做,您可以只打印出流属性本身 (<div>{{ this.facts }}</div>
),并且所有个体 flow-blocks 都将使用流块模板绘制。
编辑:
您要求将另一个(完整)页面模板显示为 flow-block 类型:
{% set other = site.get('/projects') %}
{{ site.env.render_template('facts.html', pad=other.pad, this=other)|safe }}