26. Oktober 2020, 05:00

Kombiniertes RSS mit Volltext

Am Wochenende hat mich Jochen T. mit einer Frage zu Hugo bzw. von mir für diesen Blog verwendeten Theme Kiss Em angeschrieben.

Ich verstehe nicht wie ich einen “normalen” Feed erzeugen kann, habe gesucht, aber nichts gefunden was mir weiterhift. Mein Feed enthält nur die Kategorien “mikro”, “blog” oder “page”, ich hätte aber gerne einen Feed mit den einzelnen Posts im Volltext (wie bei dir).

Da ich denke, dass möglicherweise auch andere diese Frage haben, antworte ich nach vorheriger Rückfrage und Jochens Zustimmung öffentlich:

Nun der einfache Weg ist es, in der Hugo config.toml unter [params.rss] bzw. da ich zweisprachig bin zusätzlich unter [languages.en.params.rss] zu prüfen, ob includeContent = true gesetzt ist.

Wenn das nicht ausreicht wäre hier meine /themes/kiss-em-master/layouts/_default/index.rss.xml zum Copy & Paste. Mit Blick in mein Git-Repo habe ich in Go lediglich die Schleife explizit über .Site.Pages.ByDate.Reverse in umgekehrter Sortierung geändert und zusätzlich eine if-Abfrage auf den Inhalt eingefügt.

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>{{ if eq .Title.Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
     <link>{{ .Permalink }}</link>
     <description>Recent content {{ if ne .Title.Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
    <language>{{ .Site.Language }}</language>
    <contact>{{ $.Site.Params.rss.authorEmail }}</contact>
     <copyright>{{ .Site.Params.Info.Copyright | safeHTML}}</copyright>
    {{ with .OutputFormats.Get "RSS" }}
        {{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
    {{ end }}
  {{ range .Site.Pages.ByDate.Reverse }}
    {{ if .Content }}
    <item>
      <title>{{ .Title }}</title>
      <link>{{ .Permalink }}</link>
      <pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
      <author>{{ $.Site.Params.rss.authorName }}</author>
      <guid>{{ .Permalink }}</guid>
      <description>{{ .Description | html }}</description>
      {{ if $.Site.Params.rss.includeContent }}
      <content>{{ .Content | html }}</content>
      {{ end }}
    </item>
    {{ end }}
  {{ end }}
  </channel>
</rss>

Jochen, hoffe Dir geholfen zu haben.
Dir und allen anderen einen guten Start in die neue Woche.

Tomas Jakobs

© 2020 Tomas Jakobs - Impressum und Datenschutzhinweis