2017-07-04 15:09:36 +02:00
|
|
|
package site
|
2017-07-03 16:39:55 +02:00
|
|
|
|
|
|
|
import (
|
2017-07-04 15:09:36 +02:00
|
|
|
"github.com/osteele/gojekyll/collection"
|
2017-07-03 16:39:55 +02:00
|
|
|
"github.com/osteele/gojekyll/pages"
|
|
|
|
)
|
|
|
|
|
2017-07-04 15:09:36 +02:00
|
|
|
func (s *Site) findPostCollection() *collection.Collection {
|
2017-07-03 16:39:55 +02:00
|
|
|
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 (
|
2017-07-09 20:05:46 +02:00
|
|
|
ps = c.Pages()
|
|
|
|
related = ps
|
2017-07-03 16:39:55 +02:00
|
|
|
)
|
|
|
|
if len(related) > 10 {
|
|
|
|
related = related[:10]
|
|
|
|
}
|
2017-07-09 20:05:46 +02:00
|
|
|
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() {
|
2017-07-03 16:39:55 +02:00
|
|
|
for _, k := range p.Categories() {
|
|
|
|
ps, found := categories[k]
|
|
|
|
if !found {
|
|
|
|
ps = []pages.Page{}
|
|
|
|
}
|
|
|
|
categories[k] = append(ps, p)
|
|
|
|
}
|
|
|
|
}
|
2017-07-09 20:05:46 +02:00
|
|
|
return categories
|
2017-07-03 16:39:55 +02:00
|
|
|
}
|