Skip to content
Permalink
Browse files
Fix it so disableKinds etc. does not get merged in from theme
Unless the merge strategy is set up to do so.

For `disableKinds` the current workaround is to make sure the project config has an entry, even if is empty:

```
disableKinds = []
```

Note that this issue only touches root, non-map config-values that either is not set in project config or in Hugo's defaults.

Fixes #8866
  • Loading branch information
bep committed Aug 22, 2021
1 parent 7ba3f3d commit f4ffeea71dd3d044a2628bbb5d6634680667398f
Showing with 15 additions and 2 deletions.
  1. +8 −0 common/maps/params.go
  2. +1 −1 config/defaultConfigProvider.go
  3. +0 −1 config/defaultConfigProvider_test.go
  4. +6 −0 hugolib/config_test.go
@@ -76,6 +76,14 @@ func (p Params) Merge(pp Params) {
p.merge("", pp)
}

// MergeRoot transfers values from pp to p for new keys where p is the
// root of the tree.
// This is done recursively.
func (p Params) MergeRoot(pp Params) {
ms, _ := p.GetMergeStrategy()
p.merge(ms, pp)
}

func (p Params) merge(ps ParamsMergeStrategy, pp Params) {
ns, found := p.GetMergeStrategy()

@@ -275,7 +275,7 @@ func (c *defaultConfigProvider) Merge(k string, v interface{}) {
}
}
// Merge the rest.
c.root.Merge(p)
c.root.MergeRoot(p)
for _, k := range keysToDelete {
delete(c.root, k)
}
@@ -172,7 +172,6 @@ func TestDefaultConfigProvider(t *testing.T) {

c.Assert(cfg.Get(""), qt.DeepEquals, maps.Params{
"a": "av",
"b": "bv2",
})
})

@@ -152,6 +152,9 @@ name = "menu-top-main"
themeConfig := `
baseURL = "http://bep.is/"
# Can not be set in theme.
disableKinds = ["taxonomy", "term"]
# Can not be set in theme.
[frontmatter]
expiryDate = ["date"]
@@ -228,6 +231,9 @@ name = "menu-theme"

got := b.Cfg.Get("").(maps.Params)

// Issue #8866
b.Assert(b.Cfg.Get("disableKinds"), qt.IsNil)

b.Assert(got["params"], qt.DeepEquals, maps.Params{
"b": maps.Params{
"b1": "b1 main",

0 comments on commit f4ffeea

Please sign in to comment.