diff --git a/common/constants/constants.go b/common/constants/constants.go index e4f5a63a279..f8f057e053b 100644 --- a/common/constants/constants.go +++ b/common/constants/constants.go @@ -13,12 +13,14 @@ package constants -// Error IDs. +// Error/Warning IDs. // Do not change these values. const ( // IDs for remote errors in tpl/data. ErrRemoteGetJSON = "error-remote-getjson" ErrRemoteGetCSV = "error-remote-getcsv" + + WarnFrontMatterParamsOverrides = "warning-frontmatter-params-overrides" ) // Field/method names with special meaning. diff --git a/hugolib/page__meta.go b/hugolib/page__meta.go index 179622d9b73..e4cb2b83bc3 100644 --- a/hugolib/page__meta.go +++ b/hugolib/page__meta.go @@ -31,6 +31,7 @@ import ( "github.com/gohugoio/hugo/source" + "github.com/gohugoio/hugo/common/constants" "github.com/gohugoio/hugo/common/hugo" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/common/paths" @@ -621,6 +622,9 @@ func (p *pageState) setMetaPostParams() error { } for k, v := range userParams { + if _, found := params[k]; found { + p.s.Log.Warnidf(constants.WarnFrontMatterParamsOverrides, "Hugo front matter key %q is overridden in params section.", k) + } params[strings.ToLower(k)] = v } diff --git a/hugolib/params_test.go b/hugolib/params_test.go index f80f14035fa..6f890b43b78 100644 --- a/hugolib/params_test.go +++ b/hugolib/params_test.go @@ -133,6 +133,28 @@ RegularPages: {{ range site.RegularPages }}{{ .Path }}|{{ .RelPermalink }}|{{ .T ) } +func TestFrontMatterTitleOverrideWarn(t *testing.T) { + t.Parallel() + + files := ` +-- hugo.toml -- +baseURL = "https://example.org/" +disableKinds = ["taxonomy", "term"] +-- content/p1.md -- +--- +title: "My title" +params: + title: "My title from params" +--- + + +` + + b := Test(t, files, TestOptWarn()) + + b.AssertLogContains("ARN Hugo front matter key \"title\" is overridden in params section", "You can suppress this warning") +} + func TestFrontMatterParamsLangNoCascade(t *testing.T) { t.Parallel()