Hugo 有一个YouTube 短代码。我想将它与数据模板结合使用,以显示由 JSON 文件内容驱动的视频列表。
理想情况下,在 中site/content/index.md
,我会有这样的东西:
# Some YouTube videos
{{ range $.Site.Data.youtube.videos }}
{{< youtube .id >}}
{{ end }}
在 中site/data/youtube.yml
,我会有这样的东西:
---
videos:
- id: abc123
- id: xyz456
这样我在.yml
文件中列出的每个视频 ID 都会在我的主页上呈现为嵌入的 YouTube 视频。
这里的问题是我似乎无法像range
在.md
文件中那样使用 hugo 函数。当我尝试这个时,第一个代码片段只是被呈现为文本,而不是被 YouTube 视频替换:
很公平,让我们将代码提取到一个部分中site/layouts/partials/youtube-list.html
:
{{ range $.Site.Data.youtube.videos }}
{{< youtube .id >}}
{{ end }}
然后我们将修改site/content/index.md
以引用部分:
# Some YouTube Videos
{{ partial "youtube-list.html" . }}
现在,当我尝试运行服务器时,Hugo 告诉我我不能使用<
部分字符:
ERROR 2018/01/05 11:30:33 partials/youtube-list.html : template: partials/youtube-list.html:2: unexpected "<" in command
伟大的。我想我可以创建一个自定义简码,但它们似乎有相同的限制 - 简码不能引用另一个简码:
ERROR 2018/01/05 11:32:39 shortcodes/youtube-list.html : template: shortcodes/youtube-list.html:3: unexpected "<" in command
我想我可以在 Hugo 的 GitHub 存储库中找到 YouTube 短代码的源代码并“借用”它批发用于我的新短代码,但这似乎是不必要的代码重复。
tl; dr:有没有办法在 Hugo 中组合数据模板和简码,以便使用相同的简码来呈现从数据模板读取的列表中的每个元素?