diff --git a/commands/hugo.go b/commands/hugo.go index e08337859..a6db4d19d 100644 --- a/commands/hugo.go +++ b/commands/hugo.go @@ -48,7 +48,7 @@ Complete documentation is available at http://hugo.spf13.com`, } 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 AddCommands() { 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 @@ func InitializeConfig() { viper.RegisterAlias("taxonomies", "indexes") + viper.SetDefault("DisableRSS", false) viper.SetDefault("ContentDir", "content") viper.SetDefault("LayoutDir", "layouts") viper.SetDefault("StaticDir", "static") @@ -106,6 +108,10 @@ func InitializeConfig() { viper.Set("UglyUrls", UglyUrls) } + if hugoCmdV.PersistentFlags().Lookup("disableRSS").Changed { + viper.Set("DisableRSS", DisableRSS) + } + if hugoCmdV.PersistentFlags().Lookup("verbose").Changed { viper.Set("Verbose", Verbose) } diff --git a/hugolib/site.go b/hugolib/site.go index c8fc8893b..63810c1aa 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -457,11 +457,10 @@ func (s *Site) RenderTaxonomiesLists() (err error) { 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 @@ func (s *Site) RenderSectionLists() error { 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 @@ func (s *Site) RenderHomePage() error { 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 @@ func (s *Site) RenderHomePage() error { 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 } diff --git a/template/bundle/embedded.go b/template/bundle/embedded.go index 5beeb8d1f..45e182b7a 100644 --- a/template/bundle/embedded.go +++ b/template/bundle/embedded.go @@ -40,3 +40,29 @@ func (t *GoHtmlTemplate) EmbedShortcodes() { `) } + +func (t *GoHtmlTemplate) EmbedTemplates() { + + t.AddInternalTemplate("_default", "rss.xml", ` + + {{ .Title }} on {{ .Site.Title }} + Hugo + {{ .Permalink }} + {{ with .Site.LanguageCode }}{{.}}{{end}} + {{ with .Site.Author }}{{.}}{{end}} + {{ with .Site.Copyright }}{{.}}{{end}} + {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 MST" }} + {{ range first 15 .Data.Pages }} + + {{ .Title }} + {{ .Permalink }} + {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 MST" }} + {{with .Site.Author}}{{.}}{{end}} + {{ .Permalink }} + {{ .Content | html }} + + {{ end }} + +`) + +} diff --git a/template/bundle/template.go b/template/bundle/template.go index 5d34bbf80..20316de49 100644 --- a/template/bundle/template.go +++ b/template/bundle/template.go @@ -187,6 +187,7 @@ func NewTemplate() Template { func (t *GoHtmlTemplate) LoadEmbedded() { t.EmbedShortcodes() + t.EmbedTemplates() } func (t *GoHtmlTemplate) AddInternalTemplate(prefix, name, tpl string) error {