]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Fix front matter date location when value gets inherited from other dates
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 13 Mar 2024 14:32:33 +0000 (15:32 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 13 Mar 2024 17:00:50 +0000 (19:00 +0200)
Fixes #12236

resources/page/pagemeta/page_frontmatter.go
resources/page/pagemeta/pagemeta_integration_test.go [new file with mode: 0644]

index 8abd3807fe4e9358c75ebde857d680736b357bec..4e412c666d44993212aa4374f58afc8b15225702 100644 (file)
@@ -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 (file)
index 0000000..4d195b7
--- /dev/null
@@ -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
+`)
+}