ref: 924028a9be4e468b38f3b7a530253c7c09a0d10e
parent: 973393c99e3e6927e1c8ef27b0cd8f22eae3f4e4
author: Bjørn Erik Pedersen <[email protected]>
date: Thu Mar 10 05:31:12 EST 2016
Fix for page in multiple menus Fixes #1934
--- a/hugolib/menu_test.go
+++ b/hugolib/menu_test.go
@@ -344,6 +344,38 @@
}
+// Issue #1934
+func TestYAMLMenuWithMultipleEntries(t *testing.T) {
+ viper.Reset()
+ defer viper.Reset()
+
+ ps1 := []byte(`---
+title: "Yaml 1"
+weight: 5
+menu: ["p_one", "p_two"]
+---
+Yaml Front Matter with Menu Pages`)
+
+ ps2 := []byte(`---
+title: "Yaml 2"
+weight: 5
+menu:
+ p_three:
+ p_four:
+---
+Yaml Front Matter with Menu Pages`)
+
+ s := setupMenuTests(t, []source.ByteSource{
+ {filepath.FromSlash("sect/yaml1.md"), ps1},
+ {filepath.FromSlash("sect/yaml2.md"), ps2}})
+
+ p1 := s.Pages[0]
+ assert.Len(t, p1.Menus(), 2, "List YAML")
+ p2 := s.Pages[1]
+ assert.Len(t, p2.Menus(), 2, "Map YAML")
+
+}
+
// issue #719
func TestMenuWithUnicodeURLs(t *testing.T) {
--- a/hugolib/page.go
+++ b/hugolib/page.go
@@ -759,8 +759,8 @@
for _, mname := range mnames {
me.Menu = mname
p.pageMenus[mname] = &me
- return
}
+ return
}
// Could be a structured menu entry
@@ -772,14 +772,15 @@
for name, menu := range menus {
menuEntry := MenuEntry{Name: p.LinkTitle(), URL: link, Weight: p.Weight, Menu: name}
- jww.DEBUG.Printf("found menu: %q, in %q\n", name, p.Title)
+ if menu != nil {
+ jww.DEBUG.Printf("found menu: %q, in %q\n", name, p.Title)
+ ime, err := cast.ToStringMapE(menu)
+ if err != nil {
+ jww.ERROR.Printf("unable to process menus for %q: %s", p.Title, err)
+ }
- ime, err := cast.ToStringMapE(menu)
- if err != nil {
- jww.ERROR.Printf("unable to process menus for %q\n", p.Title)
+ menuEntry.MarshallMap(ime)
}
-
- menuEntry.MarshallMap(ime)
p.pageMenus[name] = &menuEntry
}
}