summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2024-03-13 15:32:33 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2024-03-13 19:00:50 +0200
commit9668759ad885406409ce6bd02052701619757296 (patch)
tree72244dfc6023d77569d9d076cf287cd60f74aac3
parent9e9b1f110cbcfd2182693d59243b36e6a4cc165d (diff)
Fix front matter date location when value gets inherited from other dates
Fixes #12236
-rw-r--r--resources/page/pagemeta/page_frontmatter.go16
-rw-r--r--resources/page/pagemeta/pagemeta_integration_test.go45
2 files changed, 55 insertions, 6 deletions
diff --git a/resources/page/pagemeta/page_frontmatter.go b/resources/page/pagemeta/page_frontmatter.go
index 8abd3807f..4e412c666 100644
--- a/resources/page/pagemeta/page_frontmatter.go
+++ b/resources/page/pagemeta/page_frontmatter.go
@@ -421,18 +421,22 @@ func (f *frontmatterFieldHandlers) newDateFieldHandler(key string, setter func(d
return false, nil
}
- date, err := htime.ToTimeInDefaultLocationE(v, d.Location)
- if err != nil {
- return false, nil
+ var date time.Time
+ if vt, ok := v.(time.Time); ok && vt.Location() == d.Location {
+ date = vt
+ } else {
+ var err error
+ date, err = htime.ToTimeInDefaultLocationE(v, d.Location)
+ if err != nil {
+ return false, nil
+ }
+ d.PageConfig.Params[key] = date
}
// We map several date keys to one, so, for example,
// "expirydate", "unpublishdate" will all set .ExpiryDate (first found).
setter(d, date)
- // This is the params key as set in front matter.
- d.PageConfig.Params[key] = date
-
return true, nil
}
}
diff --git a/resources/page/pagemeta/pagemeta_integration_test.go b/resources/page/pagemeta/pagemeta_integration_test.go
new file mode 100644
index 000000000..4d195b7f0
--- /dev/null
+++ b/resources/page/pagemeta/pagemeta_integration_test.go
@@ -0,0 +1,45 @@
+// Copyright 2024 The Hugo Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package pagemeta_test
+
+import (
+ "testing"
+
+ "github.com/gohugoio/hugo/hugolib"
+)
+
+func TestLastModEq(t *testing.T) {
+ files := `
+-- hugo.toml --
+timeZone = "Europe/London"
+-- content/p1.md --
+---
+title: p1
+date: 2024-03-13T06:00:00
+---
+-- layouts/_default/single.html --
+Date: {{ .Date }}
+Lastmod: {{ .Lastmod }}
+Eq: {{ eq .Date .Lastmod }}
+
+`
+
+ b := hugolib.Test(t, files)
+
+ b.AssertFileContent("public/p1/index.html", `
+Date: 2024-03-13 06:00:00 &#43;0000 GMT
+Lastmod: 2024-03-13 06:00:00 &#43;0000 GMT
+Eq: true
+`)
+}