1
0
mirror of https://github.com/gohugoio/hugo.git synced 2024-05-11 05:54:58 +00:00

Build PageMenus only once

This commit is contained in:
bep
2015-02-04 21:27:27 +01:00
parent df734bc18a
commit 11a19e0760

View File

@@ -71,6 +71,8 @@ type Page struct {
Source
Position
Node
pageMenus PageMenus
pageMenusInit sync.Once
}
type Source struct {
@@ -569,7 +571,8 @@ func (page *Page) IsMenuCurrent(menu string, inme *MenuEntry) bool {
}
func (page *Page) Menus() PageMenus {
ret := PageMenus{}
page.pageMenusInit.Do(func() {
page.pageMenus = PageMenus{}
if ms, ok := page.Params["menu"]; ok {
link, _ := page.RelPermalink()
@@ -581,18 +584,18 @@ func (page *Page) Menus() PageMenus {
if err == nil {
me.Menu = mname
ret[mname] = &me
return ret
page.pageMenus[mname] = &me
return
}
// Could be an slice of strings
// Could be a slice of strings
mnames, err := cast.ToStringSliceE(ms)
if err == nil {
for _, mname := range mnames {
me.Menu = mname
ret[mname] = &me
return ret
page.pageMenus[mname] = &me
return
}
}
@@ -613,12 +616,12 @@ func (page *Page) Menus() PageMenus {
}
menuEntry.MarshallMap(ime)
ret[name] = &menuEntry
page.pageMenus[name] = &menuEntry
}
return ret
}
})
return nil
return page.pageMenus
}
func (p *Page) Render(layout ...string) template.HTML {