Skip to content

Commit

Permalink
Fix it so publishDate rolls up to section, taxonomy, or term pages
Browse files Browse the repository at this point in the history
Fixes #12438
  • Loading branch information
bep committed Jul 1, 2024
1 parent 932ab4c commit 7b6dafc
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 3 deletions.
4 changes: 2 additions & 2 deletions hugolib/content_map_page.go
Original file line number Diff line number Diff line change
Expand Up @@ -1428,7 +1428,7 @@ func (sa *sitePagesAssembler) applyAggregates() error {
}

if wasZeroDates {
pageBundle.m.pageConfig.Dates.UpdateDateAndLastmodIfAfter(sp.m.pageConfig.Dates)
pageBundle.m.pageConfig.Dates.UpdateDateAndLastmodAndPublishDateIfAfter(sp.m.pageConfig.Dates)
}

if pageBundle.IsHome() {
Expand Down Expand Up @@ -1565,7 +1565,7 @@ func (sa *sitePagesAssembler) applyAggregatesToTaxonomiesAndTerms() error {
return
}

p.m.pageConfig.Dates.UpdateDateAndLastmodIfAfter(sp.m.pageConfig.Dates)
p.m.pageConfig.Dates.UpdateDateAndLastmodAndPublishDateIfAfter(sp.m.pageConfig.Dates)
})
}

Expand Down
83 changes: 83 additions & 0 deletions hugolib/dates_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -266,3 +266,86 @@ Home's Date should be equal mydata date: true
Full time: 6:00:00 am UTC
`)
}

func TestPublisDateRollupIssue12438(t *testing.T) {
t.Parallel()

// To future Hugo maintainers, this test will start to fail in 2099.
files := `
-- hugo.toml --
disableKinds = ['home','rss','sitemap']
[taxonomies]
tag = 'tags'
-- layouts/_default/list.html --
Date: {{ .Date.Format "2006-01-02" }}
PublishDate: {{ .PublishDate.Format "2006-01-02" }}
Lastmod: {{ .Lastmod.Format "2006-01-02" }}
-- layouts/_default/single.html --
{{ .Title }}
-- content/s1/p1.md --
---
title: p1
date: 2024-03-01
lastmod: 2024-03-02
tags: [t1]
---
-- content/s1/p2.md --
---
title: p2
date: 2024-04-03
lastmod: 2024-04-04
tags: [t1]
---
-- content/s1/p3.md --
---
title: p3
lastmod: 2099-05-06
tags: [t1]
---
`

// Test without publishDate in front matter.
b := Test(t, files)

b.AssertFileContent("public/s1/index.html", `
Date: 2099-05-06
PublishDate: 2024-04-03
Lastmod: 2099-05-06
`)

b.AssertFileContent("public/tags/index.html", `
Date: 2024-04-03
PublishDate: 2024-04-03
Lastmod: 2024-04-04
`)

b.AssertFileContent("public/tags/t1/index.html", `
Date: 2024-04-03
PublishDate: 2024-04-03
Lastmod: 2024-04-04
`)

// Test with publishDate in front matter.
files = strings.ReplaceAll(files, "lastmod", "publishDate")

b = Test(t, files)

b.AssertFileContent("public/s1/index.html", `
Date: 2099-05-06
PublishDate: 2024-04-04
Lastmod: 2099-05-06
`)

b.AssertFileContent("public/tags/index.html", `
Date: 2024-04-03
PublishDate: 2024-04-04
Lastmod: 2024-04-03
`)

b.AssertFileContent("public/tags/t1/index.html", `
Date: 2024-04-03
PublishDate: 2024-04-04
Lastmod: 2024-04-03
`)
}
6 changes: 5 additions & 1 deletion resources/page/pagemeta/page_frontmatter.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,17 @@ func (d Dates) IsDateOrLastModAfter(in Dates) bool {
return d.Date.After(in.Date) || d.Lastmod.After(in.Lastmod)
}

func (d *Dates) UpdateDateAndLastmodIfAfter(in Dates) {
func (d *Dates) UpdateDateAndLastmodAndPublishDateIfAfter(in Dates) {
if in.Date.After(d.Date) {
d.Date = in.Date
}
if in.Lastmod.After(d.Lastmod) {
d.Lastmod = in.Lastmod
}

if in.PublishDate.After(d.PublishDate) && in.PublishDate.Before(htime.Now()) {
d.PublishDate = in.PublishDate
}
}

func (d Dates) IsAllDatesZero() bool {
Expand Down

0 comments on commit 7b6dafc

Please sign in to comment.
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy