自定义页面作为栏目索引,随处列出内容

Custom page as the index of a section, and listing content anywhere

我是 Hugo 的新手,所以如果我使用了错误的术语请原谅 - 如果我用错了请纠正我。让我解释一下我需要做什么。

让我们考虑旅行社的网站。该机构有“优惠”,它们被组织成“类别”(如果类别在前面有 parent 属性,则可能是子类别)。如果我猜对了 Hugo,“offers”和“categories”应该是两个部分,我应该有一个这样的文件夹结构,content/offers 中的每个页面在其前面的内容中引用一个类别:

content
|- categories
|  |- europe.md
|  |- americas.md
|  |- asia.md
|  |- italy.md
|  |- france.md
|- offers
   |- a-week-in-paris.md
   |- new-york-and-the-east-cost.md
   |- milan-unknown-history.md
   |- indian-charm.md

我想制作一个类别的页面,以便它列出其子类别及其报价:我应该在 layouts/categories/single.html 布局中这样做,对吗?但是,如何获取其子类别的集合(即 parent 属性 中具有“此类别”的类别)或其报价的集合(即具有“此类别”的报价)在 category 属性)?

我还希望有一个商品的“根”页面,它只显示五个顶级类别的列表(即没有 parent 属性 的类别) .假设我不希望此页面成为“常规”类别页面,而是自定义页面;也许它甚至不在 /categories 之类的 URL,而是 /browse-offers。如果我创建一个页面(通过创建 content/browse-offers.mdlayouts/_default/browse-offers.html),我如何访问类别列表?我应该把它变成“类别”部分的“列表”页面吗?如果类别的“列表”页面应该是所有类别的过滤列表怎么办?

我觉得 Hugo 非常灵活,但我能找到的所有文档和示例总是谈论一个简单的 posts/list-of-posts 站点结构。如果我想在主页上显示“最高报价”画廊怎么办?我找不到如何获取“事物”列表,除非我在“列表”页面中进行操作...

您可以遍历类别(在任何布局中)并检查 'parent' 参数,如下所示:

{{ range (where .Site.RegularPages "Section" "categories" ) }}
  {{ if .Params.parent }}
    ...
  {{ else }}
    ...
  {{ end }}
{{ end }}