【发布时间】:2016-11-12 11:07:06
【问题描述】:
我无法在我的 markdown 文件中重用模板代码。 例如,我想提取 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 中重用代码的解决方案。谢谢!
【问题讨论】:
标签: markdown nunjucks metalsmith