diff --git a/hugolib/site.go b/hugolib/site.go index b1371045b..c5f27b28b 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -1698,6 +1698,36 @@ func (s *Site) assembleSections() { wp.Page.PrevInSection = s.Sections[k][i+1].Page } } + + } + + var ( + sectionsParamId = "mainSections" + sectionsParamIdLower = strings.ToLower(sectionsParamId) + mainSections interface{} + found bool + ) + + if mainSections, found = s.Info.Params[sectionsParamIdLower]; !found { + // Pick the section with most regular pages + var ( + chosenSection string + pageCount int + ) + + for sect, pages := range s.Sections { + if pages.Count() >= pageCount { + chosenSection = sect + pageCount = pages.Count() + } + } + mainSections = []string{chosenSection} + + // Try to make this as backwards compatible as possible. + s.Info.Params[sectionsParamId] = mainSections + s.Info.Params[sectionsParamIdLower] = mainSections + } else { + s.Info.Params[sectionsParamId] = mainSections } } diff --git a/hugolib/site_test.go b/hugolib/site_test.go index e00e8b230..e18456bf9 100644 --- a/hugolib/site_test.go +++ b/hugolib/site_test.go @@ -400,6 +400,8 @@ func doTestSectionNaming(t *testing.T, canonify, uglify, pluralize bool) { sources := []source.ByteSource{ {Name: filepath.FromSlash("sect/doc1.html"), Content: []byte("doc1")}, + // Add one more page to sect to make sure sect is picked in mainSections + {Name: filepath.FromSlash("sect/sect.html"), Content: []byte("sect")}, {Name: filepath.FromSlash("Fish and Chips/doc2.html"), Content: []byte("doc2")}, {Name: filepath.FromSlash("ラーメン/doc3.html"), Content: []byte("doc3")}, } @@ -419,6 +421,11 @@ func doTestSectionNaming(t *testing.T, canonify, uglify, pluralize bool) { writeSource(t, fs, filepath.Join("layouts", "_default/list.html"), "{{.Title}}") s := buildSingleSite(t, deps.DepsCfg{Fs: fs, Cfg: cfg}, BuildCfg{}) + + mainSections, err := s.Info.Param("mainSections") + require.NoError(t, err) + require.Equal(t, mainSections, []string{"sect"}) + th := testHelper{s.Cfg, s.Fs, t} tests := []struct { doc string