mirror of
https://github.com/danog/gojekyll.git
synced 2024-11-27 00:44:41 +01:00
47 lines
997 B
Go
47 lines
997 B
Go
package site
|
|
|
|
import (
|
|
"github.com/osteele/gojekyll/collection"
|
|
"github.com/osteele/gojekyll/pages"
|
|
)
|
|
|
|
func (s *Site) findPostCollection() *collection.Collection {
|
|
for _, c := range s.Collections {
|
|
if c.Name == "posts" {
|
|
return c
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (s *Site) setPostVariables() {
|
|
c := s.findPostCollection()
|
|
if c == nil {
|
|
return
|
|
}
|
|
var (
|
|
ps = c.Pages()
|
|
related = ps
|
|
)
|
|
if len(related) > 10 {
|
|
related = related[:10]
|
|
}
|
|
s.drop["categories"] = s.groupPagesBy(func(p pages.Page) []string { return p.Categories() })
|
|
s.drop["tags"] = s.groupPagesBy(func(p pages.Page) []string { return p.Tags() })
|
|
s.drop["related_posts"] = related
|
|
}
|
|
|
|
func (s *Site) groupPagesBy(getter func(pages.Page) []string) map[string][]pages.Page {
|
|
categories := map[string][]pages.Page{}
|
|
for _, p := range s.Pages() {
|
|
for _, k := range p.Categories() {
|
|
ps, found := categories[k]
|
|
if !found {
|
|
ps = []pages.Page{}
|
|
}
|
|
categories[k] = append(ps, p)
|
|
}
|
|
}
|
|
return categories
|
|
}
|