1
0
mirror of https://github.com/danog/gojekyll.git synced 2024-11-26 19:34:52 +01:00
gojekyll/plugins/default_layout.go
2017-09-02 15:50:47 -04:00

48 lines
870 B
Go

package plugins
func init() {
register("jekyll-default-layout", jekyllDefaultLayout{})
}
type jekyllDefaultLayout struct{ plugin }
const (
pageLayoutName = "page"
postLayoutName = "post"
homeLayoutName = "home"
)
var layoutNames = []string{"default", postLayoutName, pageLayoutName, homeLayoutName}
func (p jekyllDefaultLayout) layoutNames(s Site) map[string]string {
var m = map[string]string{}
var n string
for _, k := range layoutNames {
if s.HasLayout(k) {
n = k
}
m[k] = n
}
return m
}
func (p jekyllDefaultLayout) PostInitPage(s Site, pg Page) error {
fm := pg.FrontMatter()
if fm["layout"] != nil {
return nil
}
layoutNames := p.layoutNames(s)
k := pageLayoutName
switch {
case pg.IsPost():
k = postLayoutName
case pg.URL() == "/":
k = homeLayoutName
}
n := layoutNames[k]
if n != "" {
fm["layout"] = n
}
return nil
}