node to page: Add all nodes to sitemap
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 9 Nov 2016 18:59:28 +0000 (19:59 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 22 Nov 2016 08:57:03 +0000 (09:57 +0100)
Updates #2297
Fixes #1303

hugolib/hugo_sites.go
hugolib/page_collections.go
hugolib/site_render.go
hugolib/sitemap_test.go

index 9c931c5f673280cd3d523a52a2a7cbbdeaf15532..89fcbea730862fe61997dbf0b5eb30bc606a8f45 100644 (file)
@@ -569,6 +569,7 @@ func (s *Site) newTaxonomyTermsPage(plural string) *Page {
        p := s.newNodePage(NodeTaxonomyTerms)
        p.sections = []string{plural}
        p.Title = strings.Title(plural)
+       s.setPageURLs(p, plural)
        return p
 }
 
index d63e9631ad6509467c070b0dde300aa55973b38b..cb83c77a809a20c4d0419e1f3603b569325f7648 100644 (file)
@@ -123,7 +123,7 @@ func (*PageCollections) findPagesByNodeTypeNotIn(n NodeType, inPages Pages) Page
 }
 
 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 {
index 4bc4a5e70e6a98b338d3c3647ab17940e14ae764..8777d91a707ae1aa7eddf4f651b94b0fdc3305b6 100644 (file)
@@ -182,19 +182,18 @@ func (s *Site) renderSitemap() error {
 
        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
-
-       pages = append(pages, page)
-       pages = append(pages, s.Pages...)
+       page.Sitemap.Filename = sitemapDefault.Filename
 
        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
index 0ec51497ab8cdd73df1c9168c1ea2e4bc1915a3f..72fcb2048c902e00b063b31989687036c554ca66 100644 (file)
@@ -17,7 +17,6 @@ import (
        "testing"
 
        "reflect"
-       "strings"
 
        "github.com/spf13/hugo/helpers"
        "github.com/spf13/hugo/source"
@@ -36,6 +35,12 @@ const SITEMAP_TEMPLATE = `<urlset xmlns="http://www.sitemaps.org/schemas/sitemap
 </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 @@ func TestSitemapOutput(t *testing.T) {
                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) {