hugo/docs/content/templates/rss.md
2015-03-30 16:50:44 +02:00

3.8 KiB
Raw Blame History

aliases date linktitle menu next notoc prev title weight
/layout/rss/
2013-07-01 RSS
main
parent
layout
/templates/sitemap one /templates/partials RSS (feed) Templates 90

Like all other templates, you can use a single RSS template to generate all of your RSS feeds, or you can create a specific template for each individual feed. Unlike other templates, Hugo ships with its own RSS 2.0 template. In most cases this will be sufficient, and an RSS template will not need to be provided by the user.

RSS pages are of the type "node" and have all the node variables available to use in the templates.

Which Template will be rendered?

Hugo uses a set of rules to figure out which template to use when rendering a specific page.

Hugo will use the following prioritized list. If a file isnt present, then the next one in the list will be used. This enables you to craft specific layouts when you want to without creating more templates than necessary. For most sites only the _default file at the end of the list will be needed.

Main RSS

  • /layouts/rss.xml
  • /layouts/_default/rss.xml
  • __internal/rss.xml

Section RSS

  • /layouts/section/SECTION.rss.xml
  • /layouts/_default/rss.xml
  • /themes/THEME/layouts/section/SECTION.rss.xml
  • /themes/THEME/layouts/_default/rss.xml
  • __internal/rss.xml

Taxonomy RSS

  • /layouts/taxonomy/SINGULAR.rss.xml
  • /layouts/_default/rss.xml
  • /themes/THEME/layouts/taxonomy/SINGULAR.rss.xml
  • /themes/THEME/layouts/_default/rss.xml
  • __internal/rss.xml

Configuring RSS

If the following are provided in the sites config file, then they will be included in the RSS output. Example values are provided.

languageCode = "en-us"
copyright = "This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License."

[author]
    name = "My Name Here"

The Embedded rss.xml

This is the RSS template that ships with Hugo. It adheres to the RSS 2.0 Specification.

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}</title>
    <link>{{ .Permalink }}</link>
    <description>Recent content {{ with .Title }}in {{.}} {{ end }}on {{ .Site.Title }}</description>
    <generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
    <language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
    <managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
    <webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
    <copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
    <lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
    <atom:link href="{{.URL}}" rel="self" type="application/rss+xml" />
    {{ range first 15 .Data.Pages }}
    <item>
      <title>{{ .Title }}</title>
      <link>{{ .Permalink }}</link>
      <pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
      {{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
      <guid>{{ .Permalink }}</guid>
      <description>{{ .Content | html }}</description>
    </item>
    {{ end }}
  </channel>
</rss>

Important: Hugo will automatically add the following header line to this file on render… please don't include this in the template as it's not valid HTML.

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>