diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-06-15 17:33:09 +0300 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-06-15 23:23:02 +0300 |
commit | 522ba1cd98ac67482061448c3a7528e68a720f0d (patch) | |
tree | 527560bfa89b66683c1118d132c8270b42812777 /hugolib/page.go | |
parent | 889dc47ceba9cf5cbd6e61a9222a5e54cd562332 (diff) |
Fix order of GetTerms
Preserve the order from front matter, which would be behaviour when doing this manually (before GetTerms).
Fixes #7213
Diffstat (limited to 'hugolib/page.go')
-rw-r--r-- | hugolib/page.go | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/hugolib/page.go b/hugolib/page.go index 083e702ed..baf5e7f69 100644 --- a/hugolib/page.go +++ b/hugolib/page.go @@ -132,6 +132,7 @@ func (p *pageState) GitInfo() *gitmap.GitInfo { } // GetTerms gets the terms defined on this page in the given taxonomy. +// The pages returned will be ordered according to the front matter. func (p *pageState) GetTerms(taxonomy string) page.Pages { if p.treeRef == nil { return nil @@ -147,8 +148,9 @@ func (p *pageState) GetTerms(taxonomy string) page.Pages { m.taxonomies.WalkQuery(pageMapQuery{Prefix: prefix}, func(s string, n *contentNode) bool { key := s + self - if _, found := m.taxonomyEntries.Get(key); found { - pas = append(pas, n.p) + if tn, found := m.taxonomyEntries.Get(key); found { + vi := tn.(*contentNode).viewInfo + pas = append(pas, pageWithOrdinal{pageState: n.p, ordinal: vi.ordinal}) } return false }) @@ -1006,3 +1008,22 @@ func (s *Site) sectionsFromFile(fi source.File) []string { return parts } + +var ( + _ page.Page = (*pageWithOrdinal)(nil) + _ collections.Order = (*pageWithOrdinal)(nil) + _ pageWrapper = (*pageWithOrdinal)(nil) +) + +type pageWithOrdinal struct { + ordinal int + *pageState +} + +func (p pageWithOrdinal) Ordinal() int { + return p.ordinal +} + +func (p pageWithOrdinal) page() page.Page { + return p.pageState +} |