diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2021-07-09 11:52:03 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2021-07-10 11:13:41 +0200 |
commit | 5cb52c23150032b3fdb211a095745c512369b463 (patch) | |
tree | 3b0c83c462e15e4e55acdf674b70c6ef140291c0 /hugolib/page__meta.go | |
parent | 30eea3915b67f72611a3b2f4547146d4c6a96864 (diff) |
Add config.cascade
This commit adds support for using the `cascade` keyword in your configuration file(s), e.g. `config.toml`.
Note that
* Every feature of `cascade` is available, e.g. `_target` to target specific page sets.
* Pages, e.g. the home page, can overwrite the cascade defined in config.
Fixes #8741
Diffstat (limited to 'hugolib/page__meta.go')
-rw-r--r-- | hugolib/page__meta.go | 32 |
1 files changed, 4 insertions, 28 deletions
diff --git a/hugolib/page__meta.go b/hugolib/page__meta.go index 759fadd2d..3b31cb299 100644 --- a/hugolib/page__meta.go +++ b/hugolib/page__meta.go @@ -340,34 +340,10 @@ func (pm *pageMeta) setMetadata(parentBucket *pagesMapBucket, p *pageState, fron if p.bucket != nil { // Check for any cascade define on itself. if cv, found := frontmatter["cascade"]; found { - if v, err := maps.ToSliceStringMap(cv); err == nil { - p.bucket.cascade = make(map[page.PageMatcher]maps.Params) - - for _, vv := range v { - var m page.PageMatcher - if mv, found := vv["_target"]; found { - err := page.DecodePageMatcher(mv, &m) - if err != nil { - return err - } - } - c, found := p.bucket.cascade[m] - if found { - // Merge - for k, v := range vv { - if _, found := c[k]; !found { - c[k] = v - } - } - } else { - p.bucket.cascade[m] = vv - } - - } - } else { - p.bucket.cascade = map[page.PageMatcher]maps.Params{ - {}: maps.ToStringMap(cv), - } + var err error + p.bucket.cascade, err = page.DecodeCascade(cv) + if err != nil { + return err } } } |