mirror of
https://github.com/gohugoio/hugo.git
synced 2025-04-17 04:47:57 +00:00
Build PageMenus only once
This commit is contained in:
parent
df734bc18a
commit
11a19e0760
1 changed files with 38 additions and 35 deletions
|
@ -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 {
|
||||
|
|
Loading…
Add table
Reference in a new issue