diff options
author | Bjørn Erik Pedersen <[email protected]> | 2024-11-18 15:01:09 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2024-11-18 16:20:25 +0100 |
commit | e917401c710d4213e17b7174ed18f042784ff6d6 (patch) | |
tree | 7a15cc25ad03a57c62a78a49ed492f13d8fa97fe | |
parent | eb298144b63cfa9e6720ec5731c7687d7df15955 (diff) | |
download | hugo-e917401c710d4213e17b7174ed18f042784ff6d6.tar.gz hugo-e917401c710d4213e17b7174ed18f042784ff6d6.zip |
Make sure term is always set
Fixes #13063
-rw-r--r-- | hugolib/content_map_page.go | 9 | ||||
-rw-r--r-- | hugolib/page__new.go | 20 | ||||
-rw-r--r-- | hugolib/pagesfromdata/pagesfromgotmpl_integration_test.go | 30 |
3 files changed, 51 insertions, 8 deletions
diff --git a/hugolib/content_map_page.go b/hugolib/content_map_page.go index 8c9e4a31a..a336c8489 100644 --- a/hugolib/content_map_page.go +++ b/hugolib/content_map_page.go @@ -1595,6 +1595,10 @@ func (sa *sitePagesAssembler) applyAggregatesToTaxonomiesAndTerms() error { } func (sa *sitePagesAssembler) assembleTermsAndTranslations() error { + if sa.pageMap.cfg.taxonomyTermDisabled { + return nil + } + var ( pages = sa.pageMap.treePages entries = sa.pageMap.treeTaxonomyEntries @@ -1612,10 +1616,6 @@ func (sa *sitePagesAssembler) assembleTermsAndTranslations() error { return false, nil } - if sa.pageMap.cfg.taxonomyTermDisabled { - return false, nil - } - for _, viewName := range views { vals := types.ToStringSlicePreserveString(getParam(ps, viewName.plural, false)) if vals == nil { @@ -1674,6 +1674,7 @@ func (sa *sitePagesAssembler) assembleTermsAndTranslations() error { }) } } + return false, nil }, } diff --git a/hugolib/page__new.go b/hugolib/page__new.go index 91bfe5e32..7d948ef58 100644 --- a/hugolib/page__new.go +++ b/hugolib/page__new.go @@ -15,6 +15,7 @@ package hugolib import ( "fmt" + "strings" "sync" "sync/atomic" @@ -140,6 +141,7 @@ func (h *HugoSites) doNewPage(m *pageMeta) (*pageState, *paths.Path, error) { } } + var tc viewName // Identify Page Kind. if m.pageConfig.Kind == "" { m.pageConfig.Kind = kinds.KindSection @@ -147,16 +149,13 @@ func (h *HugoSites) doNewPage(m *pageMeta) (*pageState, *paths.Path, error) { m.pageConfig.Kind = kinds.KindHome } else if m.pathInfo.IsBranchBundle() { // A section, taxonomy or term. - tc := m.s.pageMap.cfg.getTaxonomyConfig(m.Path()) + tc = m.s.pageMap.cfg.getTaxonomyConfig(m.Path()) if !tc.IsZero() { // Either a taxonomy or a term. if tc.pluralTreeKey == m.Path() { m.pageConfig.Kind = kinds.KindTaxonomy - m.singular = tc.singular } else { m.pageConfig.Kind = kinds.KindTerm - m.term = m.pathInfo.Unnormalized().BaseNameNoIdentifier() - m.singular = tc.singular } } } else if m.f != nil { @@ -164,6 +163,19 @@ func (h *HugoSites) doNewPage(m *pageMeta) (*pageState, *paths.Path, error) { } } + if m.pageConfig.Kind == kinds.KindTerm || m.pageConfig.Kind == kinds.KindTaxonomy { + if tc.IsZero() { + tc = m.s.pageMap.cfg.getTaxonomyConfig(m.Path()) + } + if tc.IsZero() { + return nil, fmt.Errorf("no taxonomy configuration found for %q", m.Path()) + } + m.singular = tc.singular + if m.pageConfig.Kind == kinds.KindTerm { + m.term = paths.TrimLeading(strings.TrimPrefix(m.pathInfo.Unnormalized().Base(), tc.pluralTreeKey)) + } + } + if m.pageConfig.Kind == kinds.KindPage && !m.s.conf.IsKindEnabled(m.pageConfig.Kind) { return nil, nil } diff --git a/hugolib/pagesfromdata/pagesfromgotmpl_integration_test.go b/hugolib/pagesfromdata/pagesfromgotmpl_integration_test.go index a4cf4dcff..b033aad2b 100644 --- a/hugolib/pagesfromdata/pagesfromgotmpl_integration_test.go +++ b/hugolib/pagesfromdata/pagesfromgotmpl_integration_test.go @@ -678,3 +678,33 @@ summary: {{ .Summary }}|content: {{ .Content}} "<p>aaa</p>|content: <p>aaa</p>\n<p>bbb</p>", ) } + +// Issue 13063. +func TestPagesFromGoTmplTermIsEmpty(t *testing.T) { + t.Parallel() + + files := ` +-- hugo.toml -- +baseURL = "https://example.com" +disableKinds = ['section', 'home', 'rss','sitemap'] +printPathWarnings = true +[taxonomies] +tag = "tags" +-- content/mypost.md -- +--- +title: "My Post" +tags: ["mytag"] +--- +-- content/tags/_content.gotmpl -- +{{ .AddPage (dict "path" "mothertag" "title" "My title" "kind" "term") }} +-- +-- layouts/_default/taxonomy.html -- +Terms: {{ range .Data.Terms.ByCount }}{{ .Name }}: {{ .Count }}|{{ end }}§s +-- layouts/_default/single.html -- +Single. +` + + b := hugolib.Test(t, files, hugolib.TestOptWarn()) + + b.AssertFileContent("public/tags/index.html", "Terms: mytag: 1|§s") +} |