我无法在我的降价文件中重用模板代码。例如,我想提取 vimeo 链接的嵌入代码,然后将 vimeo id 传递给调用。
一个示例宏:
{% macro vimeoEmbed(id) %}
<iframe src="https://player.vimeo.com/video/{{ id }}?title=0&byline=0&portrait=0" width="300" height="169" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
{% endmacro %}
像这样使用:
{{ vimeoEmbed(120394634) }}
如果我直接在 markdown 文件中定义宏,这将有效。但我当然希望有一个带有宏的全局文件,以便于维护。
我尝试使用 Nunjucks 的{% import "macros.njk" as macros %}
. macros.njk
将包含vimeoEmbed
宏。
但不幸的是,我不断得到Error: template names must be a string: undefined
.
作为替代方案,我尝试使用{% include "vimeoEmbed.njk" %}
但我得到了相同的Error: template names must be a string: undefined
.
这似乎是metalsmith-in-place
Nujucks 特有的include
,并且import
与metalsmith-layouts
.
任何其他在 markdown 文件和 Nunjucks 中重用代码的解决方案也是受欢迎的。谢谢!