如何通过降价名称遍历 Hugo 页面

Luk*_*nek 2 go hugo

我正在构建一个简单的 Hugo 博客,并且我有以下页面的 toml 配置

+++
[publications]
links = ["2017/article1",
        "2017/article2"]
+++
Run Code Online (Sandbox Code Playgroud)

我将这些文件放在相应的内容部分 (content/publications/2017/article1.md)。我需要的是遍历它们,加载每个页面并使用它们.Params中的一些来构建部分。就像是

 {{ range .Params.publications.links }}
 {{ do something with page parameters }}
 {{ end }}
Run Code Online (Sandbox Code Playgroud)

我想这是一个基本的雨果问题,我只是想不通。

Jac*_*lor 6

这实际上需要对 Hugo 模板进行一些非常高级的使用。但是你可以做到!

首先,为了方便您自己,将“.md”扩展名添加到您尝试访问的页面。添加完整路径可能也是一个好主意,这样如果您将来在不同目录中添加具有相同名称的文件,Hugo 就不会得到错误的文件。

+++
[publications]
links = ["publications/2017/article1.md",
        "publications/2017/article2.md"]
+++
Run Code Online (Sandbox Code Playgroud)

然后您可以在模板中使用类似以下内容。

{{ range .Params.publications.links }}
  {{ range where $.Site.Pages "URL" ($.RelRef .) }}
    The "{{ .Title }}" page has {{ .WordCount }} words.
  {{ end }}
{{ end }}
Run Code Online (Sandbox Code Playgroud)

这使用where函数通过 URL 字段过滤所有站点页面的数组。要查找 URL,它使用.RelRefpage 变量带有链接文本。

我认为还应该有一种方法可以在apply没有内部range语句的情况下使用该函数来执行此操作,但是我无法使其正常工作。