shithub: hugo

Download patch

ref: 6cdb8109cfd1253ebb5b3f36e6a0e5ee95f11e71
parent: 26d23f7f4becb2bbfa80d91ae9b27ffc76e13e3a
author: Gerben Castel <[email protected]>
date: Thu Dec 10 14:39:06 EST 2015

Allow renaming of sitemap.xml

--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -222,7 +222,7 @@
 	viper.SetDefault("RemovePathAccents", false)
 	viper.SetDefault("Taxonomies", map[string]string{"tag": "tags", "category": "categories"})
 	viper.SetDefault("Permalinks", make(hugolib.PermalinkOverrides, 0))
-	viper.SetDefault("Sitemap", hugolib.Sitemap{Priority: -1})
+	viper.SetDefault("Sitemap", hugolib.Sitemap{Priority: -1, Filename: "sitemap.xml"})
 	viper.SetDefault("DefaultExtension", "html")
 	viper.SetDefault("PygmentsStyle", "monokai")
 	viper.SetDefault("PygmentsUseClasses", false)
--- a/docs/content/templates/sitemap.md
+++ b/docs/content/templates/sitemap.md
@@ -23,6 +23,7 @@
 
 **.Sitemap.ChangeFreq** The page change frequency<br>
 **.Sitemap.Priority** The priority of the page<br>
+**.Sitemap.Filename** The sitemap filename<br>
 
 In addition to the standard node variables, the homepage has access to all
 site pages through `.Data.Pages`.
@@ -53,10 +54,11 @@
 
 ## Configuring sitemap.xml
 
-Defaults for `<changefreq>` and `<priority>` values can be set in the site's config file, e.g.:
+Defaults for `<changefreq>`, `<priority>` and `filename` values can be set in the site's config file, e.g.:
 
     [sitemap]
       changefreq = "monthly"
       priority = 0.5
+      filename = "sitemap.xml"
 
-The same fields can be specified in an individual page's front matter in order to override the value for that page.
\ No newline at end of file
+The same fields can be specified in an individual page's front matter in order to override the value for that page.
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -1541,11 +1541,15 @@
 		if page.Sitemap.Priority == -1 {
 			page.Sitemap.Priority = sitemapDefault.Priority
 		}
+
+		if page.Sitemap.Filename == "" {
+			page.Sitemap.Filename = sitemapDefault.Filename
+		}
 	}
 
 	smLayouts := []string{"sitemap.xml", "_default/sitemap.xml", "_internal/_default/sitemap.xml"}
 
-	if err := s.renderAndWriteXML("sitemap", "sitemap.xml", n, s.appendThemeTemplates(smLayouts)...); err != nil {
+	if err := s.renderAndWriteXML("sitemap", page.Sitemap.Filename, n, s.appendThemeTemplates(smLayouts)...); err != nil {
 		return err
 	}
 
--- a/hugolib/sitemap.go
+++ b/hugolib/sitemap.go
@@ -21,10 +21,11 @@
 type Sitemap struct {
 	ChangeFreq string
 	Priority   float64
+	Filename   string
 }
 
 func parseSitemap(input map[string]interface{}) Sitemap {
-	sitemap := Sitemap{Priority: -1}
+	sitemap := Sitemap{Priority: -1, Filename: "sitemap.xml"}
 
 	for key, value := range input {
 		switch key {
@@ -32,6 +33,8 @@
 			sitemap.ChangeFreq = cast.ToString(value)
 		case "priority":
 			sitemap.Priority = cast.ToFloat64(value)
+		case "filename":
+			sitemap.Filename = cast.ToString(value)
 		default:
 			jww.WARN.Printf("Unknown Sitemap field: %s\n", key)
 		}