]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
Make sure term is always set
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 18 Nov 2024 14:01:09 +0000 (15:01 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 18 Nov 2024 15:20:25 +0000 (16:20 +0100)
Fixes #13063

hugolib/content_map_page.go
hugolib/page__new.go
hugolib/pagesfromdata/pagesfromgotmpl_integration_test.go

index 8c9e4a31a2ff00bef282cc8a3797ea296f41cf49..a336c84899547371731fed1eda66161225c028f2 100644 (file)
@@ -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
                },
        }
index 91bfe5e32398fa223907d42c468340be0b9bf3f3..7d948ef5882bba5e6dceeb0c8ee9fd5cfafed1c6 100644 (file)
@@ -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
                }
index a4cf4dcff24265399cc60b2a5491db25e3b11008..b033aad2b658436bd0a8df89e9f9c3b9a6dfcc13 100644 (file)
@@ -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")
+}