<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>hi, it&#39;s mike</title>
    <link>https://mike.puddingtime.org/tags/design/</link>
    <description>Recent content on hi, it&#39;s mike</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>mike@puddingtime.org (mike)</managingEditor>
    <webMaster>mike@puddingtime.org (mike)</webMaster>
    <copyright>© 2026, mike</copyright>
    <lastBuildDate>Thu, 18 May 2023 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://mike.puddingtime.org/tags/design/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Full content in the RSS feed (and how to add a second Hugo feed)</title>
      <link>https://mike.puddingtime.org/posts/2023-05-18-full-content-in-the-rss-feed/</link>
      <pubDate>Thu, 18 May 2023 00:00:00 +0000</pubDate><author>mike@puddingtime.org (mike)</author>
      <guid>https://mike.puddingtime.org/posts/2023-05-18-full-content-in-the-rss-feed/</guid>
      <description>There&amp;rsquo;s finally a full-content RSS feed here.</description>
      <content:encoded><![CDATA[<p>It took me a while to figure it out after a failed first attempt, but I finally made a <a href="https://mike.puddingtime.org/index.xml">full-content RSS feed.</a> It&rsquo;s going under the same name as it was before as a partial feed, so it ought to just start providing the full content of posts now.</p>
<p>Previously I was using a modified feed that was meant to work well for social syndication (e.g. cross-posting to Mastodon and Twitter). It included just the post summary plus + tags as a way to aid with discovery (especially in Mastodon). That didn&rsquo;t sit super well with me &ndash; I&rsquo;m a &ldquo;full content&rdquo; kind of person &ndash; but figuring out how to get Hugo to do two feeds took some doing.</p>
<p>While I was in there, I also shortened the length of the feeds to 20 posts. I think there are a few more things to do to make it all work just so, but I&rsquo;m content to just have a full content feed back in place for now.  Also, if you liked the old feed format (I guess some people like summaries and clicking through?) it&rsquo;s still around, but I renamed it to <a href="https://mike.puddingtime.org/social.xml">/social.xml</a>, since its primary purpose is driving an <a href="https://ifttt.com">IFTTT</a> cross-posting recipe.</p>
<h2 id="setting-it-up">Setting it up</h2>
<p>If you&rsquo;re curious about how the two feeds are configured:</p>
<p>First, you need two template files in your site&rsquo;s <code>layouts/_default</code> directory:</p>
<ul>
<li><code>rss.xml</code></li>
<li><code>list.socialrss.xml</code></li>
</ul>
<p>The first one is a <a href="https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/_default/rss.xml">standard Hugo RSS template</a> with a slight modification to the <code>description</code> property to use the full content of a post vs. the summary.</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">description</span><span class="p">&gt;</span>{{ .Content | html }}<span class="p">&lt;/</span><span class="nt">description</span><span class="p">&gt;</span></span></span></code></pre></div>
<p>The second template uses the post summary, and adds a partial:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="cl"><span class="p">&lt;</span><span class="nt">description</span><span class="p">&gt;</span>{{ .Summary | html }} <span class="p">&lt;</span><span class="nt">br</span> <span class="p">/&gt;</span>
</span></span><span class="line"><span class="cl">   {{ partial &#34;rss_tags.html&#34; . }}
</span></span><span class="line"><span class="cl"><span class="p">&lt;/</span><span class="nt">description</span><span class="p">&gt;</span></span></span></code></pre></div>
<p>The partial is how I get post tags for use in syndication to the social feed. Mastodon clients tend to auto-link hashtags, and hashtags are key to discovery in Mastodon:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">{{- $tags := .Language.Params.Taxonomies.tag | default &#34;tags&#34; }}
</span></span><span class="line"><span class="cl">{{- range ($.GetTerms $tags) }} #{{ .LinkTitle }}  {{- end }}</span></span></code></pre></div>
<p><code>config.yml</code> looks like this in my setup:</p>






<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">outputs</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">home</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span>- <span class="l">HTML</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span>- <span class="l">RSS</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span>- <span class="l">SocialRSS</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span>- <span class="l">JSON</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">outputFormats</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">RSS</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">mediatype</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;application/rss+xml&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">baseName</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;index&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">isPlainText</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">notAlternative</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="nt">SocialRSS</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">mediatype</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;application/rss+xml&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">baseName</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;social&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">isPlainText</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nt">mediaTypes</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">  </span><span class="s2">&#34;application/rss&#34;</span><span class="p">:</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nt">suffixes</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&#34;xml&#34;</span><span class="p">]</span></span></span></code></pre></div>
]]></content:encoded>
    </item>
  </channel>
</rss>
