shithub: hugo

Download patch

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
 			}
 		}