summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoe Mooring <joe.mooring@veriphor.com>2024-02-22 11:51:22 -0800
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2024-02-23 09:32:32 +0100
commit36bf3cb98cf8d7a8519df473196ee73b9d014244 (patch)
treed78beaf39a153ba7f6d868cb5215b1180c24737d
parentea0ba9751d9b6a5dec9261676287832717c0ca17 (diff)
hugolib: Add capitalizeListTitles config option
Whether to capitalize automatic page titles, applicable to section, taxonomy, and term pages. Default is true. Closes #9793 Closes #12115
-rw-r--r--config/allconfig/allconfig.go3
-rw-r--r--config/allconfig/load.go1
-rw-r--r--hugolib/page__meta.go19
-rw-r--r--hugolib/page__meta_test.go59
4 files changed, 78 insertions, 4 deletions
diff --git a/config/allconfig/allconfig.go b/config/allconfig/allconfig.go
index 21d12b0c7..469a164cf 100644
--- a/config/allconfig/allconfig.go
+++ b/config/allconfig/allconfig.go
@@ -538,6 +538,9 @@ type RootConfig struct {
// Note that this currently only works for English, but you can provide your own title in the content file's front matter.
PluralizeListTitles bool
+ // Whether to capitalize automatic page titles, applicable to section, taxonomy, and term pages.
+ CapitalizeListTitles bool
+
// Make all relative URLs absolute using the baseURL.
// <docsmeta>{"identifiers": ["baseURL"] }</docsmeta>
CanonifyURLs bool
diff --git a/config/allconfig/load.go b/config/allconfig/load.go
index cb267422f..8675ced23 100644
--- a/config/allconfig/load.go
+++ b/config/allconfig/load.go
@@ -189,6 +189,7 @@ func (l configLoader) applyDefaultConfig() error {
"menus": maps.Params{},
"disableLiveReload": false,
"pluralizeListTitles": true,
+ "CapitalizeListTitles": true,
"forceSyncStatic": false,
"footnoteAnchorPrefix": "",
"footnoteReturnLinkContents": "",
diff --git a/hugolib/page__meta.go b/hugolib/page__meta.go
index 03f4d4d19..082e3145a 100644
--- a/hugolib/page__meta.go
+++ b/hugolib/page__meta.go
@@ -446,7 +446,7 @@ title: "My Title"
params:
build: "My Build"
---
`
}
@@ -746,15 +746,26 @@ func (p *pageMeta) applyDefaultValues() error {
if p.s.conf.PluralizeListTitles {
sectionName = flect.Pluralize(sectionName)
}
- p.pageConfig.Title = p.s.conf.C.CreateTitle(sectionName)
+ if p.s.conf.CapitalizeListTitles {
+ sectionName = p.s.conf.C.CreateTitle(sectionName)
+ }
+ p.pageConfig.Title = sectionName
case kinds.KindTerm:
if p.term != "" {
- p.pageConfig.Title = p.s.conf.C.CreateTitle(p.term)
+ if p.s.conf.CapitalizeListTitles {
+ p.pageConfig.Title = p.s.conf.C.CreateTitle(p.term)
+ } else {
+ p.pageConfig.Title = p.term
+ }
} else {
panic("term not set")
}
case kinds.KindTaxonomy:
- p.pageConfig.Title = strings.Replace(p.s.conf.C.CreateTitle(p.pathInfo.Unnormalized().BaseNameNoIdentifier()), "-", " ", -1)
+ if p.s.conf.CapitalizeListTitles {
+ p.pageConfig.Title = strings.Replace(p.s.conf.C.CreateTitle(p.pathInfo.Unnormalized().BaseNameNoIdentifier()), "-", " ", -1)
+ } else {
+ p.pageConfig.Title = strings.Replace(p.pathInfo.Unnormalized().BaseNameNoIdentifier(), "-", " ", -1)
+ }
case kinds.KindStatus404:
p.pageConfig.Title = "404 Page not found"
}
diff --git a/hugolib/page__meta_test.go b/hugolib/page__meta_test.go
new file mode 100644
index 000000000..d4b66ed9a
--- /dev/null
+++ b/hugolib/page__meta_test.go
@@ -0,0 +1,59 @@
+// 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 hugolib_test
+
+import (
+ "strings"
+ "testing"
+
+ "github.com/gohugoio/hugo/hugolib"
+)
+
+// Issue 9793
+// Issue 12115
+func TestListTitles(t *testing.T) {
+ t.Parallel()
+
+ files := `
+-- hugo.toml --
+disableKinds = ['home','rss','sitemap']
+capitalizeListTitles = true
+pluralizeListTitles = true
+[taxonomies]
+tag = 'tags'
+-- content/section-1/page-1.md --
+---
+title: page-1
+tags: 'tag-a'
+---
+-- layouts/_default/list.html --
+{{ .Title }}
+-- layouts/_default/single.html --
+{{ .Title }}
+ `
+
+ b := hugolib.Test(t, files)
+
+ b.AssertFileContent("public/section-1/index.html", "Section-1s")
+ b.AssertFileContent("public/tags/index.html", "Tags")
+ b.AssertFileContent("public/tags/tag-a/index.html", "Tag-A")
+
+ files = strings.Replace(files, "true", "false", -1)
+
+ b = hugolib.Test(t, files)
+
+ b.AssertFileContent("public/section-1/index.html", "section-1")
+ b.AssertFileContent("public/tags/index.html", "tags")
+ b.AssertFileContent("public/tags/tag-a/index.html", "tag-a")
+}