Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-06-15 17:33:09 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-06-15 23:23:02 +0300
commit522ba1cd98ac67482061448c3a7528e68a720f0d (patch)
tree527560bfa89b66683c1118d132c8270b42812777 /hugolib/page.go
parent889dc47ceba9cf5cbd6e61a9222a5e54cd562332 (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.go25
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
+}