shithub: hugo

Download patch

ref: c0a046cbfb24d64847e6b8a5cd8be8a7e8a0fc80
parent: bb9bcdcf305dd4c1ffcb8efb7cca544300099189
author: spf13 <[email protected]>
date: Wed Apr 9 13:45:34 EDT 2014

Added internal rss.xml template and config option to turn off rss creation

--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -48,7 +48,7 @@
 }
 var hugoCmdV *cobra.Command
 
-var BuildWatch, Draft, UglyUrls, Verbose, Logging, VerboseLog bool
+var BuildWatch, Draft, UglyUrls, Verbose, Logging, VerboseLog, DisableRSS bool
 var Source, Destination, BaseUrl, CfgFile, LogFile string
 
 func Execute() {
@@ -65,6 +65,7 @@
 
 func init() {
 	HugoCmd.PersistentFlags().BoolVarP(&Draft, "build-drafts", "D", false, "include content marked as draft")
+	HugoCmd.PersistentFlags().BoolVar(&DisableRSS, "disableRSS", false, "Do not build RSS files")
 	HugoCmd.PersistentFlags().StringVarP(&Source, "source", "s", "", "filesystem path to read files relative from")
 	HugoCmd.PersistentFlags().StringVarP(&Destination, "destination", "d", "", "filesystem path to write files to")
 	HugoCmd.PersistentFlags().BoolVarP(&Verbose, "verbose", "v", false, "verbose output")
@@ -86,6 +87,7 @@
 
 	viper.RegisterAlias("taxonomies", "indexes")
 
+	viper.SetDefault("DisableRSS", false)
 	viper.SetDefault("ContentDir", "content")
 	viper.SetDefault("LayoutDir", "layouts")
 	viper.SetDefault("StaticDir", "static")
@@ -104,6 +106,10 @@
 
 	if hugoCmdV.PersistentFlags().Lookup("uglyurls").Changed {
 		viper.Set("UglyUrls", UglyUrls)
+	}
+
+	if hugoCmdV.PersistentFlags().Lookup("disableRSS").Changed {
+		viper.Set("DisableRSS", DisableRSS)
 	}
 
 	if hugoCmdV.PersistentFlags().Lookup("verbose").Changed {
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -457,11 +457,10 @@
 					return err
 				}
 
-				if a := s.Tmpl.Lookup("rss.xml"); a != nil {
+				if !viper.GetBool("DisableRSS") {
 					// XML Feed
 					s.setUrls(n, base+".xml")
-					err := s.render(n, base+".xml", "rss.xml")
-					// TODO add "taxonomy.xml", "_internal/rss.xml"
+					err := s.render(n, base+".xml", "rss.xml", "_internal/_default/rss.xml")
 					if err != nil {
 						return err
 					}
@@ -515,12 +514,11 @@
 			return err
 		}
 
-		if a := s.Tmpl.Lookup("rss.xml"); a != nil {
+		if !viper.GetBool("DisableRSS") {
 			// XML Feed
 			s.setUrls(n, section+".xml")
-			err = s.render(n, section+".xml", "rss.xml")
+			err = s.render(n, section+".xml", "rss.xml", "_internal/_default/rss.xml")
 			//TODO add section specific rss
-			// TODO add internal rss
 			if err != nil {
 				return err
 			}
@@ -539,7 +537,7 @@
 		return err
 	}
 
-	if a := s.Tmpl.Lookup("rss.xml"); a != nil {
+	if !viper.GetBool("DisableRSS") {
 		// XML Feed
 		n.Url = helpers.Urlize("index.xml")
 		n.Title = "Recent Content"
@@ -552,8 +550,7 @@
 		if len(s.Pages) > 0 {
 			n.Date = s.Pages[0].Date
 		}
-		err := s.render(n, ".xml", "rss.xml")
-		// TODO add internal RSS
+		err := s.render(n, ".xml", "rss.xml", "_internal/_default/rss.xml")
 		if err != nil {
 			return err
 		}
--- a/template/bundle/embedded.go
+++ b/template/bundle/embedded.go
@@ -40,3 +40,29 @@
 </figure>
 <!-- image -->`)
 }
+
+func (t *GoHtmlTemplate) EmbedTemplates() {
+
+	t.AddInternalTemplate("_default", "rss.xml", `<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
+  <channel>
+      <title>{{ .Title }} on {{ .Site.Title }} </title>
+      <generator uri="https://hugo.spf13.com">Hugo</generator>
+    <link>{{ .Permalink }}</link>
+    {{ with .Site.LanguageCode }}<language>{{.}}</language>{{end}}
+    {{ with .Site.Author }}<author>{{.}}</author>{{end}}
+    {{ with .Site.Copyright }}<copyright>{{.}}</copyright>{{end}}
+    <updated>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 MST" }}</updated>
+    {{ range first 15 .Data.Pages }}
+    <item>
+      <title>{{ .Title }}</title>
+      <link>{{ .Permalink }}</link>
+      <pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 MST" }}</pubDate>
+      {{with .Site.Author}}<author>{{.}}</author>{{end}}
+      <guid>{{ .Permalink }}</guid>
+      <description>{{ .Content | html }}</description>
+    </item>
+    {{ end }}
+  </channel>
+</rss>`)
+
+}
--- a/template/bundle/template.go
+++ b/template/bundle/template.go
@@ -187,6 +187,7 @@
 
 func (t *GoHtmlTemplate) LoadEmbedded() {
 	t.EmbedShortcodes()
+	t.EmbedTemplates()
 }
 
 func (t *GoHtmlTemplate) AddInternalTemplate(prefix, name, tpl string) error {