HUGO
Menu
GitHub 87548 stars Mastodon

GetPage

返回给定路径的页面对象。

Syntax

SITE.GetPage PATH

Returns

page.Page

GetPage 方法也可在 Page 对象上使用,允许您指定相对于当前页面的路径。请参阅 详情

当在 Site 对象上使用 GetPage 方法时,指定相对于 content 目录的路径。

如果 Hugo 无法将路径解析为页面,该方法返回 nil。

考虑此内容结构:

content/
├── works/
│   ├── paintings/
│   │   ├── _index.md
│   │   ├── starry-night.md
│   │   └── the-mona-lisa.md
│   ├── sculptures/
│   │   ├── _index.md
│   │   ├── david.md
│   │   └── the-thinker.md
│   └── _index.md
└── _index.md

主页 模板:

layouts/home.html
{{ with .Site.GetPage "/works/paintings" }}
  <ul>
    {{ range .Pages }}
      <li>{{ .Title }} by {{ .Params.artist }}</li>
    {{ end }}
  </ul>
{{ end }}

渲染为:

<ul>
  <li>Starry Night by Vincent van Gogh</li>
  <li>The Mona Lisa by Leonardo da Vinci</li>
</ul>

要获取常规页面而不是节页面:

layouts/home.html
{{ with .Site.GetPage "/works/paintings/starry-night" }}
  {{ .Title }} → Starry Night
  {{ .Params.artist }} → Vincent van Gogh
{{ end }}

多语言项目

使用多语言项目时,Site 对象上的 GetPage 方法将给定路径解析为当前语言中的页面。

要从不同语言获取页面,请查询 Sites 对象:

{{ with where .Site.Sites "Language.Lang" "eq" "de" }}
  {{ with index . 0 }}
    {{ with .GetPage "/works/paintings/starry-night" }}
      {{ .Title }} → Sternenklare Nacht
    {{ end }}
  {{ end }}
{{ end }}

页面包

考虑此内容结构:

content/
├── headless/    
│   ├── a.jpg
│   ├── b.jpg
│   ├── c.jpg
│   └── index.md  <-- front matter: headless = true
└── _index.md

主页 模板中,使用 Site 对象上的 GetPage 方法来渲染无头 页面包 中的所有图像:

layouts/home.html
{{ with .Site.GetPage "/headless" }}
  {{ range .Resources.ByType "image" }}
    <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
  {{ end }}
{{ end }}

Last updated: January 1, 0001
Improve this page