hugolib: Add .Site.Params.mainSections

Fixes #3206
This commit is contained in:
Bjørn Erik Pedersen 2017-04-07 13:03:34 +02:00
parent 5714531f34
commit 7ad721fd78
2 changed files with 37 additions and 0 deletions

View file

@ -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
}
}

View file

@ -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