使用jinja2呈现内容字段。
lektor-jinja-content的Python项目详细描述
乐高金贾内容
这是一个lektor插件,允许您在内容字段中呈现类似字符串的jinja2。例如,这意味着在string或markdown类型的内容字段中,您可以编写jinja逻辑,访问lektor的Template Context,并且可以访问所有正常的jinja过滤器,包括由other plugins提供的过滤器。在标记字段(或呈现为类似rst的其他字段)中,首先处理jinja,然后是格式化处理器。
您可以设置和使用jinja变量,但它们只在所呈现的字段中有意义。
使用这个插件,您必须确保呈现的内容是有效的jinja。Jinja语法错误将引发异常。如果您想要的内容不是有效的jinja,请不要忘记方便的{% raw %} {% endraw %}
标记。
n.b.使用此插件将使用jinja呈现更多项,因此生成过程将减慢。作为早期的基准和轶事,我的小网站的构建时间从4.89秒上升到5.39秒,尽管我实际上没有需要渲染的Jinja内容。我计划稍后添加配置这个插件的功能,这样如果不想的话,就不必通过jinja运行everything。
示例
查询上下文:{{ site.get('/').title }}
或{{ this.path }}
逻辑:
{%setmeaning_of_life,meaning_of_universe=this.life,this.universe%}{%ifmeaning_of_life==meaning_of_universe==42%}{%setmeaning_of_it_all=meaning_of_life%}{%else%}{%setmeaning_of_it_all='Undefined'%}{%endif%}{{meaning_of_it_all}}
降价金贾:
[link text]({{this|url}})
重构文本中的jinja:
`link text <{{this|url}}>`_
尝试运行test site以获取更多示例。
这个插件可能的未来。
这个插件为一些非常强大和非常时髦的功能打开了大门。这里有一些食物:
- 目前,
_data
和_blocks
中的每个字符串型字段都被处理,甚至像_slug
和_template
这样的字段也被处理。这些东西还能用吗? - Some people want to be able to include markdown in content files / declarations。这个插件可能会通过includes and extends为实现这一点铺平道路。
- 我们能把静态文件囚禁起来吗?
- Databags?
- What about modularity?