shithub: hugo

Download patch

ref: d3d3863c05c4cd3c3f22eb9e977bcf407a903c45
parent: 7cc637e97a596336d1c64c203cb089e9de84ec45
author: Bjørn Erik Pedersen <[email protected]>
date: Wed Nov 9 14:59:28 EST 2016

node to page: Add all nodes to sitemap

Updates #2297
Fixes #1303

--- a/hugolib/hugo_sites.go
+++ b/hugolib/hugo_sites.go
@@ -569,6 +569,7 @@
 	p := s.newNodePage(NodeTaxonomyTerms)
 	p.sections = []string{plural}
 	p.Title = strings.Title(plural)
+	s.setPageURLs(p, plural)
 	return p
 }
 
--- a/hugolib/page_collections.go
+++ b/hugolib/page_collections.go
@@ -123,7 +123,7 @@
 }
 
 func (c *PageCollections) findAllPagesByNodeType(n NodeType) Pages {
-	return c.findPagesByNodeTypeIn(n, c.rawAllPages)
+	return c.findPagesByNodeTypeIn(n, c.Nodes)
 }
 
 func (c *PageCollections) findRawAllPagesByNodeType(n NodeType) Pages {
--- a/hugolib/site_render.go
+++ b/hugolib/site_render.go
@@ -182,19 +182,18 @@
 
 	n := s.newNodePage(NodeSitemap)
 
-	// Prepend homepage to the list of pages
-	pages := make(Pages, 0)
+	// Include all pages (regular, home page, taxonomies etc.)
+	pages := s.Nodes
 
 	page := s.newNodePage(NodeSitemap)
 	page.URLPath.URL = ""
 	page.Sitemap.ChangeFreq = sitemapDefault.ChangeFreq
 	page.Sitemap.Priority = sitemapDefault.Priority
+	page.Sitemap.Filename = sitemapDefault.Filename
 
-	pages = append(pages, page)
-	pages = append(pages, s.Pages...)
-
 	n.Data["Pages"] = pages
 
+	// TODO(bep) this should be done somewhere else
 	for _, page := range pages {
 		if page.Sitemap.ChangeFreq == "" {
 			page.Sitemap.ChangeFreq = sitemapDefault.ChangeFreq
--- a/hugolib/sitemap_test.go
+++ b/hugolib/sitemap_test.go
@@ -17,7 +17,6 @@
 	"testing"
 
 	"reflect"
-	"strings"
 
 	"github.com/spf13/hugo/helpers"
 	"github.com/spf13/hugo/source"
@@ -36,6 +35,12 @@
 </urlset>`
 
 func TestSitemapOutput(t *testing.T) {
+	for _, internal := range []bool{false, true} {
+		doTestSitemapOutput(t, internal)
+	}
+}
+
+func doTestSitemapOutput(t *testing.T, internal bool) {
 	testCommonResetState()
 
 	viper.Set("baseURL", "http://auth/bub/")
@@ -45,15 +50,30 @@
 		Language: helpers.NewDefaultLanguage(),
 	}
 
-	if err := buildAndRenderSite(s, "sitemap.xml", SITEMAP_TEMPLATE); err != nil {
-		t.Fatalf("Failed to build site: %s", err)
+	if internal {
+		if err := buildAndRenderSite(s); err != nil {
+			t.Fatalf("Failed to build site: %s", err)
+		}
+
+	} else {
+		if err := buildAndRenderSite(s, "sitemap.xml", SITEMAP_TEMPLATE); err != nil {
+			t.Fatalf("Failed to build site: %s", err)
+		}
 	}
 
-	sitemapContent := readDestination(t, "public/sitemap.xml")
+	assertFileContent(t, "public/sitemap.xml", true,
+		// Regular page
+		" <loc>http://auth/bub/sect/doc1/</loc>",
+		// Home page
+		"<loc>http://auth/bub/</loc>",
+		// Section
+		"<loc>http://auth/bub/sect/</loc>",
+		// Tax terms
+		"<loc>http://auth/bub/categories/</loc>",
+		// Tax list
+		"<loc>http://auth/bub/categories/hugo/</loc>",
+	)
 
-	if !strings.HasPrefix(sitemapContent, "<?xml") {
-		t.Errorf("Sitemap file should start with <?xml. %s", sitemapContent)
-	}
 }
 
 func TestParseSitemap(t *testing.T) {