summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAlan Pearce2023-06-20 18:28:42 +0200
committerAlan Pearce2023-06-20 18:28:42 +0200
commitea30ac77b60642d691a0508af5eb005186cf2851 (patch)
treeda885a4ac645fd9b6c981422c0cc24324dea732e
parent5d1e2d2018aba1eef5820a285f7e9004070972de (diff)
downloadwebsite-ea30ac77b60642d691a0508af5eb005186cf2851.tar.lz
website-ea30ac77b60642d691a0508af5eb005186cf2851.tar.zst
website-ea30ac77b60642d691a0508af5eb005186cf2851.zip
Add styling to Atom feed
-rw-r--r--content/feed-styles/index.md4
-rw-r--r--templates/atom.xml48
-rw-r--r--templates/feed-styles.html77
3 files changed, 129 insertions, 0 deletions
diff --git a/content/feed-styles/index.md b/content/feed-styles/index.md
new file mode 100644
index 0000000..bac7916
--- /dev/null
+++ b/content/feed-styles/index.md
@@ -0,0 +1,4 @@
++++
+title = "feed-styles"
+template = "feed-styles.html"
++++
diff --git a/templates/atom.xml b/templates/atom.xml
new file mode 100644
index 0000000..3fd5dee
--- /dev/null
+++ b/templates/atom.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="/feed-styles/" type="text/xsl"?>
+<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="{{ lang }}">
+    <title>{{ config.title }}
+    {%- if term %} - {{ term.name }}
+    {%- elif section.title %} - {{ section.title }}
+    {%- endif -%}
+    </title>
+    {%- if config.description %}
+    <subtitle>{{ config.description }}</subtitle>
+    {%- endif %}
+    <link href="{{ feed_url | safe }}" rel="self" type="application/atom+xml"/>
+    <link href="
+      {%- if section -%}
+        {{ section.permalink | escape_xml | safe }}
+      {%- else -%}
+        {{ config.base_url | escape_xml | safe }}
+      {%- endif -%}
+    "/>
+    <generator uri="https://www.getzola.org/">Zola</generator>
+    <updated>{{ last_updated | date(format="%+") }}</updated>
+    <id>{{ feed_url | safe }}</id>
+    {%- for page in pages %}
+    <entry xml:lang="{{ page.lang }}">
+        <title>{{ page.title }}</title>
+        <published>{{ page.date | date(format="%+") }}</published>
+        <updated>{{ page.updated | default(value=page.date) | date(format="%+") }}</updated>
+        <author>
+          <name>
+            {%- if page.authors -%}
+              {{ page.authors[0] }}
+            {%- elif config.author -%}
+              {{ config.author }}
+            {%- else -%}
+              Unknown
+            {%- endif -%}
+          </name>
+        </author>
+        <link rel="alternate" href="{{ page.permalink | safe }}" type="text/html"/>
+        <id>{{ page.permalink | safe }}</id>
+        {% if page.summary %}
+        <summary type="html">{{ page.summary }}</summary>
+        {% else %}
+        <content type="html">{{ page.content }}</content>
+        {% endif %}
+    </entry>
+    {%- endfor %}
+</feed>
diff --git a/templates/feed-styles.html b/templates/feed-styles.html
new file mode 100644
index 0000000..a6cae59
--- /dev/null
+++ b/templates/feed-styles.html
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:atom="http://www.w3.org/2005/Atom">
+  <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
+  <xsl:template match="/">
+    <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+      <head>
+        <title>
+          RSS Feed |
+          <xsl:value-of select="/atom:feed/atom:title"/>
+        </title>
+        <meta charset="utf-8"/>
+        <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
+        <meta name="viewport" content="width=device-width, initial-scale=1"/>
+        {% include "style.html" ignore missing -%}
+      </head>
+      <body>
+        <main>
+          <div class="helptext">
+            <strong>This is an RSS feed</strong>. Subscribe by copying
+            the URL from the address bar into your newsreader. Visit
+            <a href="https://aboutfeeds.com">About Feeds</a>
+            to learn more and get started. It's free.
+          </div>
+          <div>
+            <h1>
+              <!-- https://commons.wikimedia.org/wiki/File:Feed-icon.svg -->
+              <svg xmlns="http://www.w3.org/2000/svg" version="1.1"
+                   style="width: 1.5ex; height: 1.5ex"
+                   viewBox="0 0 256 256">
+                <rect width="256" height="256" x="0" y="0" fill="#7F7F7F"/>
+                <rect width="246" height="246" x="5" y="5" fill="#A0A0A0"/>
+                <rect width="236" height="236" x="10" y="10" fill="#A6A6A6"/>
+                <circle cx="68" cy="189" r="24" fill="#FFF"/>
+                <path
+                  d="M160 213h-34a82 82 0 0 0 -82 -82v-34a116 116 0 0 1 116 116z"
+                  fill="#FFF"/>
+                <path
+                  d="M184 213A140 140 0 0 0 44 73 V 38a175 175 0 0 1 175 175z"
+                  fill="#FFF"/>
+              </svg>
+              RSS Feed Preview |
+              <span>
+                <xsl:value-of select="/atom:feed/atom:title"/>
+              </span>
+            </h1>
+            <nav>
+              <a>
+                <xsl:attribute name="href">
+                  <xsl:value-of select="/atom:feed/atom:link[2]/@href"/>
+                </xsl:attribute>
+                Visit Website
+              </a>
+            </nav>
+            <ul class="blog-posts">
+              <xsl:for-each select="/atom:feed/atom:entry">
+                <li>
+                  <span>
+                    <xsl:value-of select="substring(atom:updated, 0, 11)" />
+                  </span>
+                  <div>
+                    <a>
+                      <xsl:attribute name="href">
+                        <xsl:value-of select="atom:link/@href"/>
+                      </xsl:attribute>
+                      <xsl:value-of select="atom:title"/>
+                    </a>
+                  </div>
+                </li>
+              </xsl:for-each>
+            </ul>
+          </div>
+        </main>
+      </body>
+    </html>
+  </xsl:template>
+</xsl:stylesheet>