summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pyssg.xyz/db.psv2
-rw-r--r--pyssg.xyz/db_blog.psv2
-rw-r--r--pyssg.xyz/live/blog/a/second.html107
-rw-r--r--pyssg.xyz/live/blog/first.html104
-rw-r--r--pyssg.xyz/live/blog/index.html108
-rw-r--r--pyssg.xyz/live/blog/rss.xml52
-rw-r--r--pyssg.xyz/live/blog/sitemap.xml48
-rw-r--r--pyssg.xyz/live/blog/tag/@english.html100
-rw-r--r--pyssg.xyz/live/blog/tag/@multiple-author.html99
-rw-r--r--pyssg.xyz/live/blog/tag/@short.html100
-rw-r--r--pyssg.xyz/live/blog/tag/@test.html100
-rw-r--r--pyssg.xyz/live/blog/tag/@update.html100
-rw-r--r--pyssg.xyz/live/pyssg.xyz/404.html4
-rw-r--r--pyssg.xyz/live/pyssg.xyz/index.html6
-rw-r--r--pyssg.xyz/live/pyssg.xyz/rss.xml2
-rw-r--r--pyssg.xyz/live/pyssg.xyz/sitemap.xml2
-rw-r--r--pyssg.xyz/plt/blog/index.html101
-rw-r--r--pyssg.xyz/plt/blog/page.html87
-rw-r--r--pyssg.xyz/plt/blog/tag.html89
-rw-r--r--pyssg.xyz/plt/body/header.html4
-rw-r--r--pyssg.xyz/src/blog/a/second.md14
-rw-r--r--pyssg.xyz/src/pyssg.xyz/index.md4
-rw-r--r--src/pyssg/configuration.py11
-rw-r--r--src/pyssg/page.py18
24 files changed, 1167 insertions, 97 deletions
diff --git a/pyssg.xyz/db.psv b/pyssg.xyz/db.psv
index b6ea878..6e25b3e 100644
--- a/pyssg.xyz/db.psv
+++ b/pyssg.xyz/db.psv
@@ -1,4 +1,4 @@
test.md|1670227510.7104242|1670481891.6152065|21ef9b29a3a7b73718b244c9f32ef576|-
subdir/test2.md|1670237921.0787709|0.0|309bd695d912634400f1d50b65d51ba3|-
-index.md|1670906223.8776777|1670981840.3921337|6628953df39997d59ecc67ca9feb7366|-
+index.md|1670906223.8776777|1671077575.953031|4bb24fb729562b6793486b503d8b9e5c|-
404.md|1670985271.2221887|0.0|184dcb50b5aeba89d98679f29f7b6d9e|-
diff --git a/pyssg.xyz/db_blog.psv b/pyssg.xyz/db_blog.psv
new file mode 100644
index 0000000..72117e9
--- /dev/null
+++ b/pyssg.xyz/db_blog.psv
@@ -0,0 +1,2 @@
+first.md|1671076311.823135|0.0|778bce781d95730cd1e872a10130e20d|english,short,test,update
+a/second.md|1671077831.63301|1671078892.892921|6092d6471d3a83135293e34ef6012939|english,multiple-author,short,test,update
diff --git a/pyssg.xyz/live/blog/a/second.html b/pyssg.xyz/live/blog/a/second.html
new file mode 100644
index 0000000..79c7445
--- /dev/null
+++ b/pyssg.xyz/live/blog/a/second.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html>
+<html class="theme-dark" lang="en
+"
+ prefix="og: https://ogp.me/ns#">
+ <head>
+ <base href="https://static.pyssg.xyz">
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="images/icons/favicon.ico">
+<title>Second blog post for testing purposes -- pyssg blog</title>
+<meta name="description" content="PySSG blog, the python static site generator official blog."/>
+<link rel="alternate" type="application/rss+xml" href="https://blog.pyssg.xyz/rss.xml" title="pyssg blog RSS">
+ <!-- general style -->
+ <link rel="stylesheet" type="text/css" href="css/style.css">
+ <link rel="stylesheet" type="text/css" href="fork-awesome/css/fork-awesome.min.css">
+ <link rel="stylesheet" type="text/css" href="font-awesome/css/all.min.css">
+ <!-- theme related -->
+ <script type="text/javascript" src="scripts/theme.js"></script>
+ <link id="theme-css" rel="stylesheet" type="text/css" href="css/theme.css">
+ <!-- extra -->
+ <!-- og meta -->
+ <meta property="og:title" content="pyssg blog"/>
+ <meta property="og:type" content="article"/>
+ <meta property="og:url" content="https://blog.pyssg.xyz/a/second.md"/>
+ <meta property="og:image" content="https://static.pyssg.xyz/images/default.png"/>
+ <meta property="og:description" content="PySSG blog, the python static site generator official blog."/>
+ <meta property="og:locale" content="en"/>
+ <meta property="og:site_name" content="pyssg blog"/>
+ </head>
+
+ <body>
+ <header>
+<nav>
+ <ul>
+ <li>
+ <a href="https://blog.pyssg.xyz"><i class="fas fa-home" alt="Home"></i><span>Home</span></a>
+ </li>
+
+ <li>
+ <a href="https://blog.pyssg.xyz/"><i class="fas fa-book-open" alt="Blog"></i><span>Blog</span></a>
+ </li>
+
+ <li><i class="fab fa-git" alt="Git"></i><span>Git</span>
+ <ul>
+ <li><a href="https://git.luevano.xyz/" target="_blank"><i class="fab fa-git-alt" alt="Git-alt"></i></a></li>
+
+ <li><a href="https://github.com/luevano" target="_blank"><i class="fab fa-github" alt="Github"></i></a></li>
+
+ <li><a href="https://gitlab.com/dluevano" target="_blank"><i class="fab fa-gitlab" alt="Gitlab"></i></a></li>
+ </ul>
+ </li>
+ </ul>
+</nav>
+
+<button class="theme-switcher" onclick="toggleTheme()"><i class="fas fa-moon"></i><i class="fas fa-sun"></i></button>
+
+ </header>
+
+ <main>
+ <h1>Second blog post for testing purposes</h1>
+
+ <p>By David Luévano, Someone Else</p>
+ <p>Created: Thu, Dec 15, 2022 @ 04:17 UTC</p>
+ <p>Modified: Thu, Dec 15, 2022 @ 04:34 UTC</p>
+
+ <p>A second &ldquo;blog entry&rdquo; for testing purposes which uses multiple authors and is inside a subdirectory.</p>
+<p>Added a modification here after first submission.</p>
+
+<p>Tags:
+ <a href="https://blog.pyssg.xyz/tag/@english.html">english</a>,
+ <a href="https://blog.pyssg.xyz/tag/@multiple-author.html">multiple-author</a>,
+ <a href="https://blog.pyssg.xyz/tag/@short.html">short</a>,
+ <a href="https://blog.pyssg.xyz/tag/@test.html">test</a>,
+ <a href="https://blog.pyssg.xyz/tag/@update.html">update</a>
+</p>
+ </main>
+
+ <footer>
+<span>
+ <i class="fas fa-address-card" alt="Contact"></i>
+ <a href="https://blog.pyssg.xyz/contact.html">Contact</a>
+</span>
+
+<span>
+ <i class="fas fa-donate" alt="Donate"></i>
+ <a href="https://blog.pyssg.xyz/donate.html">Donate</a>
+</span>
+
+<span>
+ <i class="fas fa-rss" alt="RSS"></i>
+ <a target="_blank" href="https://blog.pyssg.xyz/rss.xml">RSS</a>
+</span>
+
+<br>
+<span class="created-with">
+ <i class="fas fa-hammer" alt="Hammer"></i>
+ Created with <a href="https://github.com/luevano/pyssg">pyssg</a>
+</span>
+
+<br>
+<span class="copyright">
+ Copyright <i class="far fa-copyright" alt="Copyright"></i> 2023 David Luévano Alvarado
+</span>
+
+ </footer>
+ </body>
+</html> \ No newline at end of file
diff --git a/pyssg.xyz/live/blog/first.html b/pyssg.xyz/live/blog/first.html
new file mode 100644
index 0000000..2ba22e6
--- /dev/null
+++ b/pyssg.xyz/live/blog/first.html
@@ -0,0 +1,104 @@
+<!DOCTYPE html>
+<html class="theme-dark" lang="en
+"
+ prefix="og: https://ogp.me/ns#">
+ <head>
+ <base href="https://static.pyssg.xyz">
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="images/icons/favicon.ico">
+<title>First blog post for testing purposes -- pyssg blog</title>
+<meta name="description" content="PySSG blog, the python static site generator official blog."/>
+<link rel="alternate" type="application/rss+xml" href="https://blog.pyssg.xyz/rss.xml" title="pyssg blog RSS">
+ <!-- general style -->
+ <link rel="stylesheet" type="text/css" href="css/style.css">
+ <link rel="stylesheet" type="text/css" href="fork-awesome/css/fork-awesome.min.css">
+ <link rel="stylesheet" type="text/css" href="font-awesome/css/all.min.css">
+ <!-- theme related -->
+ <script type="text/javascript" src="scripts/theme.js"></script>
+ <link id="theme-css" rel="stylesheet" type="text/css" href="css/theme.css">
+ <!-- extra -->
+ <!-- og meta -->
+ <meta property="og:title" content="pyssg blog"/>
+ <meta property="og:type" content="article"/>
+ <meta property="og:url" content="https://blog.pyssg.xyz/first.md"/>
+ <meta property="og:image" content="https://static.pyssg.xyz/images/default.png"/>
+ <meta property="og:description" content="PySSG blog, the python static site generator official blog."/>
+ <meta property="og:locale" content="en"/>
+ <meta property="og:site_name" content="pyssg blog"/>
+ </head>
+
+ <body>
+ <header>
+<nav>
+ <ul>
+ <li>
+ <a href="https://blog.pyssg.xyz"><i class="fas fa-home" alt="Home"></i><span>Home</span></a>
+ </li>
+
+ <li>
+ <a href="https://blog.pyssg.xyz/"><i class="fas fa-book-open" alt="Blog"></i><span>Blog</span></a>
+ </li>
+
+ <li><i class="fab fa-git" alt="Git"></i><span>Git</span>
+ <ul>
+ <li><a href="https://git.luevano.xyz/" target="_blank"><i class="fab fa-git-alt" alt="Git-alt"></i></a></li>
+
+ <li><a href="https://github.com/luevano" target="_blank"><i class="fab fa-github" alt="Github"></i></a></li>
+
+ <li><a href="https://gitlab.com/dluevano" target="_blank"><i class="fab fa-gitlab" alt="Gitlab"></i></a></li>
+ </ul>
+ </li>
+ </ul>
+</nav>
+
+<button class="theme-switcher" onclick="toggleTheme()"><i class="fas fa-moon"></i><i class="fas fa-sun"></i></button>
+
+ </header>
+
+ <main>
+ <h1>First blog post for testing purposes</h1>
+
+ <p>By David Luévano</p>
+ <p>Created: Thu, Dec 15, 2022 @ 03:51 UTC</p>
+
+ <p>Even though I have this &ldquo;blog&rdquo; subdomain and page setup, doesn&rsquo;t mean I&rsquo;ll be blogging for pyssg, this is just to serve as an example for the types of sites that pyssg can be used for.</p>
+
+<p>Tags:
+ <a href="https://blog.pyssg.xyz/tag/@english.html">english</a>,
+ <a href="https://blog.pyssg.xyz/tag/@short.html">short</a>,
+ <a href="https://blog.pyssg.xyz/tag/@test.html">test</a>,
+ <a href="https://blog.pyssg.xyz/tag/@update.html">update</a>
+</p>
+ </main>
+
+ <footer>
+<span>
+ <i class="fas fa-address-card" alt="Contact"></i>
+ <a href="https://blog.pyssg.xyz/contact.html">Contact</a>
+</span>
+
+<span>
+ <i class="fas fa-donate" alt="Donate"></i>
+ <a href="https://blog.pyssg.xyz/donate.html">Donate</a>
+</span>
+
+<span>
+ <i class="fas fa-rss" alt="RSS"></i>
+ <a target="_blank" href="https://blog.pyssg.xyz/rss.xml">RSS</a>
+</span>
+
+<br>
+<span class="created-with">
+ <i class="fas fa-hammer" alt="Hammer"></i>
+ Created with <a href="https://github.com/luevano/pyssg">pyssg</a>
+</span>
+
+<br>
+<span class="copyright">
+ Copyright <i class="far fa-copyright" alt="Copyright"></i> 2023 David Luévano Alvarado
+</span>
+
+ </footer>
+ </body>
+</html> \ No newline at end of file
diff --git a/pyssg.xyz/live/blog/index.html b/pyssg.xyz/live/blog/index.html
new file mode 100644
index 0000000..d288454
--- /dev/null
+++ b/pyssg.xyz/live/blog/index.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html>
+<html class="theme-dark" lang="en
+"
+ prefix="og: https://ogp.me/ns#">
+ <head>
+ <base href="https://static.pyssg.xyz">
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="images/icons/favicon.ico">
+<title>Index -- pyssg blog</title>
+<meta name="description" content="PySSG blog, the python static site generator official blog."/>
+<link rel="alternate" type="application/rss+xml" href="https://blog.pyssg.xyz/rss.xml" title="pyssg blog RSS">
+ <!-- general style -->
+ <link rel="stylesheet" type="text/css" href="css/style.css">
+ <link rel="stylesheet" type="text/css" href="fork-awesome/css/fork-awesome.min.css">
+ <link rel="stylesheet" type="text/css" href="font-awesome/css/all.min.css">
+ <!-- theme related -->
+ <script type="text/javascript" src="scripts/theme.js"></script>
+ <link id="theme-css" rel="stylesheet" type="text/css" href="css/theme.css">
+ <!-- extra -->
+ <!-- og meta -->
+ <meta property="og:title" content="pyssg blog"/>
+ <meta property="og:type" content="article"/>
+ <meta property="og:url" content="https://blog.pyssg.xyz/index.html"/>
+ <meta property="og:image" content="https://static.pyssg.xyz/images/default.png"/>
+ <meta property="og:description" content="PySSG blog, the python static site generator official blog."/>
+ <meta property="og:locale" content="en"/>
+ <meta property="og:site_name" content="pyssg blog"/>
+ </head>
+
+ <body>
+ <header>
+<nav>
+ <ul>
+ <li>
+ <a href="https://blog.pyssg.xyz"><i class="fas fa-home" alt="Home"></i><span>Home</span></a>
+ </li>
+
+ <li>
+ <a href="https://blog.pyssg.xyz/"><i class="fas fa-book-open" alt="Blog"></i><span>Blog</span></a>
+ </li>
+
+ <li><i class="fab fa-git" alt="Git"></i><span>Git</span>
+ <ul>
+ <li><a href="https://git.luevano.xyz/" target="_blank"><i class="fab fa-git-alt" alt="Git-alt"></i></a></li>
+
+ <li><a href="https://github.com/luevano" target="_blank"><i class="fab fa-github" alt="Github"></i></a></li>
+
+ <li><a href="https://gitlab.com/dluevano" target="_blank"><i class="fab fa-gitlab" alt="Gitlab"></i></a></li>
+ </ul>
+ </li>
+ </ul>
+</nav>
+
+<button class="theme-switcher" onclick="toggleTheme()"><i class="fas fa-moon"></i><i class="fas fa-sun"></i></button>
+
+ </header>
+
+ <main>
+<h1>Index -- pyssg blog</h1>
+<p>Some text here.</p>
+
+<p>Tags:
+ <a href="https://blog.pyssg.xyz/tag/@english.html">english</a>,
+ <a href="https://blog.pyssg.xyz/tag/@multiple-author.html">multiple-author</a>,
+ <a href="https://blog.pyssg.xyz/tag/@short.html">short</a>,
+ <a href="https://blog.pyssg.xyz/tag/@test.html">test</a>,
+ <a href="https://blog.pyssg.xyz/tag/@update.html">update</a>
+</p>
+
+<h2>Articles</h2>
+<ul>
+ <h3>December 2022</h3>
+ <li>Dec 15 - <a href="https://blog.pyssg.xyz/a/second.html">Second blog post for testing purposes</a></li>
+ <li>Dec 15 - <a href="https://blog.pyssg.xyz/first.html">First blog post for testing purposes</a></li>
+</ul>
+ </main>
+
+ <footer>
+<span>
+ <i class="fas fa-address-card" alt="Contact"></i>
+ <a href="https://blog.pyssg.xyz/contact.html">Contact</a>
+</span>
+
+<span>
+ <i class="fas fa-donate" alt="Donate"></i>
+ <a href="https://blog.pyssg.xyz/donate.html">Donate</a>
+</span>
+
+<span>
+ <i class="fas fa-rss" alt="RSS"></i>
+ <a target="_blank" href="https://blog.pyssg.xyz/rss.xml">RSS</a>
+</span>
+
+<br>
+<span class="created-with">
+ <i class="fas fa-hammer" alt="Hammer"></i>
+ Created with <a href="https://github.com/luevano/pyssg">pyssg</a>
+</span>
+
+<br>
+<span class="copyright">
+ Copyright <i class="far fa-copyright" alt="Copyright"></i> 2023 David Luévano Alvarado
+</span>
+
+ </footer>
+ </body>
+</html> \ No newline at end of file
diff --git a/pyssg.xyz/live/blog/rss.xml b/pyssg.xyz/live/blog/rss.xml
new file mode 100644
index 0000000..20b4c4e
--- /dev/null
+++ b/pyssg.xyz/live/blog/rss.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<rss version="2.0"
+ xmlns:atom="http://www.w3.org/2005/Atom"
+ xmlns:content="http://purl.org/rss/1.0/modules/content/">
+ <channel>
+ <title>pyssg blog</title>
+ <link>https://blog.pyssg.xyz</link>
+ <atom:link href="https://blog.pyssg.xyz/rss.xml" rel="self" type="application/rss+xml"/>
+ <description>PySSG blog, the python static site generator official blog.</description>
+ <language>en-us</language>
+ <category>Blog</category>
+ <copyright>Copyright 2023 David Luévano Alvarado</copyright>
+ <managingEditor>david@luevano.xyz (David Luévano Alvarado)</managingEditor>
+ <webMaster>david@luevano.xyz (David Luévano Alvarado)</webMaster>
+ <pubDate></pubDate>
+ <lastBuildDate></lastBuildDate>
+ <generator>pyssg v0.8.0</generator>
+ <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
+ <ttl>30</ttl>
+ <image>
+ <url>https://static.pyssg.xyz/images/default.png</url>
+ <title>pyssg blog</title>
+ <link>https://blog.pyssg.xyz</link>
+ </image>
+ <item>
+ <title>Second blog post for testing purposes</title>
+ <link>https://blog.pyssg.xyz/a/second.html</link>
+ <guid isPermaLink="true">https://blog.pyssg.xyz/a/second.html</guid>
+ <pubDate>Thu, 15 Dec 2022 04:17:11 GMT</pubDate>
+ <category>English</category>
+ <category>Multiple-author</category>
+ <category>Short</category>
+ <category>Test</category>
+ <category>Update</category>
+ <description>This is just a post used for testing (the second).</description>
+ <content:encoded><![CDATA[<p>A second &ldquo;blog entry&rdquo; for testing purposes which uses multiple authors and is inside a subdirectory.</p>
+<p>Added a modification here after first submission.</p>]]></content:encoded>
+ </item>
+ <item>
+ <title>First blog post for testing purposes</title>
+ <link>https://blog.pyssg.xyz/first.html</link>
+ <guid isPermaLink="true">https://blog.pyssg.xyz/first.html</guid>
+ <pubDate>Thu, 15 Dec 2022 03:51:51 GMT</pubDate>
+ <category>English</category>
+ <category>Short</category>
+ <category>Test</category>
+ <category>Update</category>
+ <description>This is just a post used for testing.</description>
+ <content:encoded><![CDATA[<p>Even though I have this &ldquo;blog&rdquo; subdomain and page setup, doesn&rsquo;t mean I&rsquo;ll be blogging for pyssg, this is just to serve as an example for the types of sites that pyssg can be used for.</p>]]></content:encoded>
+ </item>
+ </channel>
+</rss> \ No newline at end of file
diff --git a/pyssg.xyz/live/blog/sitemap.xml b/pyssg.xyz/live/blog/sitemap.xml
new file mode 100644
index 0000000..0a84fa2
--- /dev/null
+++ b/pyssg.xyz/live/blog/sitemap.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
+ <url>
+ <loc>https://blog.pyssg.xyz/a/second.html</loc>
+ <lastmod>2022-12-15</lastmod>
+ <changefreq>weekly</changefreq>
+ <priority>1.0</priority>
+ </url>
+ <url>
+ <loc>https://blog.pyssg.xyz/first.html</loc>
+ <lastmod>2022-12-15</lastmod>
+ <changefreq>weekly</changefreq>
+ <priority>1.0</priority>
+ </url>
+
+ <url>
+ <loc>https://blog.pyssg.xyz/tag/@english.html</loc>
+ <lastmod></lastmod>
+ <changefreq>daily</changefreq>
+ <priority>0.5</priority>
+ </url>
+ <url>
+ <loc>https://blog.pyssg.xyz/tag/@multiple-author.html</loc>
+ <lastmod></lastmod>
+ <changefreq>daily</changefreq>
+ <priority>0.5</priority>
+ </url>
+ <url>
+ <loc>https://blog.pyssg.xyz/tag/@short.html</loc>
+ <lastmod></lastmod>
+ <changefreq>daily</changefreq>
+ <priority>0.5</priority>
+ </url>
+ <url>
+ <loc>https://blog.pyssg.xyz/tag/@test.html</loc>
+ <lastmod></lastmod>
+ <changefreq>daily</changefreq>
+ <priority>0.5</priority>
+ </url>
+ <url>
+ <loc>https://blog.pyssg.xyz/tag/@update.html</loc>
+ <lastmod></lastmod>
+ <changefreq>daily</changefreq>
+ <priority>0.5</priority>
+ </url>
+</urlset> \ No newline at end of file
diff --git a/pyssg.xyz/live/blog/tag/@english.html b/pyssg.xyz/live/blog/tag/@english.html
new file mode 100644
index 0000000..f3fca24
--- /dev/null
+++ b/pyssg.xyz/live/blog/tag/@english.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<html class="theme-dark" lang="en
+"
+ prefix="og: https://ogp.me/ns#">
+ <head>
+ <base href="https://static.pyssg.xyz">
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="images/icons/favicon.ico">
+<title>Posts filtered by english -- pyssg blog</title>
+<meta name="description" content="PySSG blog, the python static site generator official blog."/>
+<link rel="alternate" type="application/rss+xml" href="https://blog.pyssg.xyz/rss.xml" title="pyssg blog RSS">
+ <!-- general style -->
+ <link rel="stylesheet" type="text/css" href="css/style.css">
+ <link rel="stylesheet" type="text/css" href="fork-awesome/css/fork-awesome.min.css">
+ <link rel="stylesheet" type="text/css" href="font-awesome/css/all.min.css">
+ <!-- theme related -->
+ <script type="text/javascript" src="scripts/theme.js"></script>
+ <link id="theme-css" rel="stylesheet" type="text/css" href="css/theme.css">
+ <!-- extra -->
+ <!-- og meta -->
+ <meta property="og:title" content="pyssg blog"/>
+ <meta property="og:type" content="article"/>
+ <meta property="og:url" content="https://blog.pyssg.xyz/tag/@english.html"/>
+ <meta property="og:image" content="https://static.pyssg.xyz/images/default.png"/>
+ <meta property="og:description" content="PySSG blog, the python static site generator official blog."/>
+ <meta property="og:locale" content="en"/>
+ <meta property="og:site_name" content="pyssg blog"/>
+ </head>
+
+ <body>
+ <header>
+<nav>
+ <ul>
+ <li>
+ <a href="https://blog.pyssg.xyz"><i class="fas fa-home" alt="Home"></i><span>Home</span></a>
+ </li>
+
+ <li>
+ <a href="https://blog.pyssg.xyz/"><i class="fas fa-book-open" alt="Blog"></i><span>Blog</span></a>
+ </li>
+
+ <li><i class="fab fa-git" alt="Git"></i><span>Git</span>
+ <ul>
+ <li><a href="https://git.luevano.xyz/" target="_blank"><i class="fab fa-git-alt" alt="Git-alt"></i></a></li>
+
+ <li><a href="https://github.com/luevano" target="_blank"><i class="fab fa-github" alt="Github"></i></a></li>
+
+ <li><a href="https://gitlab.com/dluevano" target="_blank"><i class="fab fa-gitlab" alt="Gitlab"></i></a></li>
+ </ul>
+ </li>
+ </ul>
+</nav>
+
+<button class="theme-switcher" onclick="toggleTheme()"><i class="fas fa-moon"></i><i class="fas fa-sun"></i></button>
+
+ </header>
+
+ <main>
+<h1>Posts filtered by english</h1>
+<p>Some text here.</p>
+
+<h2>Articles</h2>
+<ul>
+ <h3>December 2022</h3>
+ <li>Dec 15 - <a href="https://blog.pyssg.xyz/a/second.html">Second blog post for testing purposes</a></li>
+ <li>Dec 15 - <a href="https://blog.pyssg.xyz/first.html">First blog post for testing purposes</a></li>
+</ul>
+ </main>
+
+ <footer>
+<span>
+ <i class="fas fa-address-card" alt="Contact"></i>
+ <a href="https://blog.pyssg.xyz/contact.html">Contact</a>
+</span>
+
+<span>
+ <i class="fas fa-donate" alt="Donate"></i>
+ <a href="https://blog.pyssg.xyz/donate.html">Donate</a>
+</span>
+
+<span>
+ <i class="fas fa-rss" alt="RSS"></i>
+ <a target="_blank" href="https://blog.pyssg.xyz/rss.xml">RSS</a>
+</span>
+
+<br>
+<span class="created-with">
+ <i class="fas fa-hammer" alt="Hammer"></i>
+ Created with <a href="https://github.com/luevano/pyssg">pyssg</a>
+</span>
+
+<br>
+<span class="copyright">
+ Copyright <i class="far fa-copyright" alt="Copyright"></i> 2023 David Luévano Alvarado
+</span>
+
+ </footer>
+ </body>
+</html> \ No newline at end of file
diff --git a/pyssg.xyz/live/blog/tag/@multiple-author.html b/pyssg.xyz/live/blog/tag/@multiple-author.html
new file mode 100644
index 0000000..ca3f168
--- /dev/null
+++ b/pyssg.xyz/live/blog/tag/@multiple-author.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html>
+<html class="theme-dark" lang="en
+"
+ prefix="og: https://ogp.me/ns#">
+ <head>
+ <base href="https://static.pyssg.xyz">
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="images/icons/favicon.ico">
+<title>Posts filtered by multiple-author -- pyssg blog</title>
+<meta name="description" content="PySSG blog, the python static site generator official blog."/>
+<link rel="alternate" type="application/rss+xml" href="https://blog.pyssg.xyz/rss.xml" title="pyssg blog RSS">
+ <!-- general style -->
+ <link rel="stylesheet" type="text/css" href="css/style.css">
+ <link rel="stylesheet" type="text/css" href="fork-awesome/css/fork-awesome.min.css">
+ <link rel="stylesheet" type="text/css" href="font-awesome/css/all.min.css">
+ <!-- theme related -->
+ <script type="text/javascript" src="scripts/theme.js"></script>
+ <link id="theme-css" rel="stylesheet" type="text/css" href="css/theme.css">
+ <!-- extra -->
+ <!-- og meta -->
+ <meta property="og:title" content="pyssg blog"/>
+ <meta property="og:type" content="article"/>
+ <meta property="og:url" content="https://blog.pyssg.xyz/tag/@multiple-author.html"/>
+ <meta property="og:image" content="https://static.pyssg.xyz/images/default.png"/>
+ <meta property="og:description" content="PySSG blog, the python static site generator official blog."/>
+ <meta property="og:locale" content="en"/>
+ <meta property="og:site_name" content="pyssg blog"/>
+ </head>
+
+ <body>
+ <header>
+<nav>
+ <ul>
+ <li>
+ <a href="https://blog.pyssg.xyz"><i class="fas fa-home" alt="Home"></i><span>Home</span></a>
+ </li>
+
+ <li>
+ <a href="https://blog.pyssg.xyz/"><i class="fas fa-book-open" alt="Blog"></i><span>Blog</span></a>
+ </li>
+
+ <li><i class="fab fa-git" alt="Git"></i><span>Git</span>
+ <ul>
+ <li><a href="https://git.luevano.xyz/" target="_blank"><i class="fab fa-git-alt" alt="Git-alt"></i></a></li>
+
+ <li><a href="https://github.com/luevano" target="_blank"><i class="fab fa-github" alt="Github"></i></a></li>
+
+ <li><a href="https://gitlab.com/dluevano" target="_blank"><i class="fab fa-gitlab" alt="Gitlab"></i></a></li>
+ </ul>
+ </li>
+ </ul>
+</nav>
+
+<button class="theme-switcher" onclick="toggleTheme()"><i class="fas fa-moon"></i><i class="fas fa-sun"></i></button>
+
+ </header>
+
+ <main>
+<h1>Posts filtered by multiple-author</h1>
+<p>Some text here.</p>
+
+<h2>Articles</h2>
+<ul>
+ <h3>December 2022</h3>
+ <li>Dec 15 - <a href="https://blog.pyssg.xyz/a/second.html">Second blog post for testing purposes</a></li>
+</ul>
+ </main>
+
+ <footer>
+<span>
+ <i class="fas fa-address-card" alt="Contact"></i>
+ <a href="https://blog.pyssg.xyz/contact.html">Contact</a>
+</span>
+
+<span>
+ <i class="fas fa-donate" alt="Donate"></i>
+ <a href="https://blog.pyssg.xyz/donate.html">Donate</a>
+</span>
+
+<span>
+ <i class="fas fa-rss" alt="RSS"></i>
+ <a target="_blank" href="https://blog.pyssg.xyz/rss.xml">RSS</a>
+</span>
+
+<br>
+<span class="created-with">
+ <i class="fas fa-hammer" alt="Hammer"></i>
+ Created with <a href="https://github.com/luevano/pyssg">pyssg</a>
+</span>
+
+<br>
+<span class="copyright">
+ Copyright <i class="far fa-copyright" alt="Copyright"></i> 2023 David Luévano Alvarado
+</span>
+
+ </footer>
+ </body>
+</html> \ No newline at end of file
diff --git a/pyssg.xyz/live/blog/tag/@short.html b/pyssg.xyz/live/blog/tag/@short.html
new file mode 100644
index 0000000..141c6b9
--- /dev/null
+++ b/pyssg.xyz/live/blog/tag/@short.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<html class="theme-dark" lang="en
+"
+ prefix="og: https://ogp.me/ns#">
+ <head>
+ <base href="https://static.pyssg.xyz">
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="images/icons/favicon.ico">
+<title>Posts filtered by short -- pyssg blog</title>
+<meta name="description" content="PySSG blog, the python static site generator official blog."/>
+<link rel="alternate" type="application/rss+xml" href="https://blog.pyssg.xyz/rss.xml" title="pyssg blog RSS">
+ <!-- general style -->
+ <link rel="stylesheet" type="text/css" href="css/style.css">
+ <link rel="stylesheet" type="text/css" href="fork-awesome/css/fork-awesome.min.css">
+ <link rel="stylesheet" type="text/css" href="font-awesome/css/all.min.css">
+ <!-- theme related -->
+ <script type="text/javascript" src="scripts/theme.js"></script>
+ <link id="theme-css" rel="stylesheet" type="text/css" href="css/theme.css">
+ <!-- extra -->
+ <!-- og meta -->
+ <meta property="og:title" content="pyssg blog"/>
+ <meta property="og:type" content="article"/>
+ <meta property="og:url" content="https://blog.pyssg.xyz/tag/@short.html"/>
+ <meta property="og:image" content="https://static.pyssg.xyz/images/default.png"/>
+ <meta property="og:description" content="PySSG blog, the python static site generator official blog."/>
+ <meta property="og:locale" content="en"/>
+ <meta property="og:site_name" content="pyssg blog"/>
+ </head>
+
+ <body>
+ <header>
+<nav>
+ <ul>
+ <li>
+ <a href="https://blog.pyssg.xyz"><i class="fas fa-home" alt="Home"></i><span>Home</span></a>
+ </li>
+
+ <li>
+ <a href="https://blog.pyssg.xyz/"><i class="fas fa-book-open" alt="Blog"></i><span>Blog</span></a>
+ </li>
+
+ <li><i class="fab fa-git" alt="Git"></i><span>Git</span>
+ <ul>
+ <li><a href="https://git.luevano.xyz/" target="_blank"><i class="fab fa-git-alt" alt="Git-alt"></i></a></li>
+
+ <li><a href="https://github.com/luevano" target="_blank"><i class="fab fa-github" alt="Github"></i></a></li>
+
+ <li><a href="https://gitlab.com/dluevano" target="_blank"><i class="fab fa-gitlab" alt="Gitlab"></i></a></li>
+ </ul>
+ </li>
+ </ul>
+</nav>
+
+<button class="theme-switcher" onclick="toggleTheme()"><i class="fas fa-moon"></i><i class="fas fa-sun"></i></button>
+
+ </header>
+
+ <main>
+<h1>Posts filtered by short</h1>
+<p>Some text here.</p>
+
+<h2>Articles</h2>
+<ul>
+ <h3>December 2022</h3>
+ <li>Dec 15 - <a href="https://blog.pyssg.xyz/a/second.html">Second blog post for testing purposes</a></li>
+ <li>Dec 15 - <a href="https://blog.pyssg.xyz/first.html">First blog post for testing purposes</a></li>
+</ul>
+ </main>
+
+ <footer>
+<span>
+ <i class="fas fa-address-card" alt="Contact"></i>
+ <a href="https://blog.pyssg.xyz/contact.html">Contact</a>
+</span>
+
+<span>
+ <i class="fas fa-donate" alt="Donate"></i>
+ <a href="https://blog.pyssg.xyz/donate.html">Donate</a>
+</span>
+
+<span>
+ <i class="fas fa-rss" alt="RSS"></i>
+ <a target="_blank" href="https://blog.pyssg.xyz/rss.xml">RSS</a>
+</span>
+
+<br>
+<span class="created-with">
+ <i class="fas fa-hammer" alt="Hammer"></i>
+ Created with <a href="https://github.com/luevano/pyssg">pyssg</a>
+</span>
+
+<br>
+<span class="copyright">
+ Copyright <i class="far fa-copyright" alt="Copyright"></i> 2023 David Luévano Alvarado
+</span>
+
+ </footer>
+ </body>
+</html> \ No newline at end of file
diff --git a/pyssg.xyz/live/blog/tag/@test.html b/pyssg.xyz/live/blog/tag/@test.html
new file mode 100644
index 0000000..390a522
--- /dev/null
+++ b/pyssg.xyz/live/blog/tag/@test.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<html class="theme-dark" lang="en
+"
+ prefix="og: https://ogp.me/ns#">
+ <head>
+ <base href="https://static.pyssg.xyz">
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="images/icons/favicon.ico">
+<title>Posts filtered by test -- pyssg blog</title>
+<meta name="description" content="PySSG blog, the python static site generator official blog."/>
+<link rel="alternate" type="application/rss+xml" href="https://blog.pyssg.xyz/rss.xml" title="pyssg blog RSS">
+ <!-- general style -->
+ <link rel="stylesheet" type="text/css" href="css/style.css">
+ <link rel="stylesheet" type="text/css" href="fork-awesome/css/fork-awesome.min.css">
+ <link rel="stylesheet" type="text/css" href="font-awesome/css/all.min.css">
+ <!-- theme related -->
+ <script type="text/javascript" src="scripts/theme.js"></script>
+ <link id="theme-css" rel="stylesheet" type="text/css" href="css/theme.css">
+ <!-- extra -->
+ <!-- og meta -->
+ <meta property="og:title" content="pyssg blog"/>
+ <meta property="og:type" content="article"/>
+ <meta property="og:url" content="https://blog.pyssg.xyz/tag/@test.html"/>
+ <meta property="og:image" content="https://static.pyssg.xyz/images/default.png"/>
+ <meta property="og:description" content="PySSG blog, the python static site generator official blog."/>
+ <meta property="og:locale" content="en"/>
+ <meta property="og:site_name" content="pyssg blog"/>
+ </head>
+
+ <body>
+ <header>
+<nav>
+ <ul>
+ <li>
+ <a href="https://blog.pyssg.xyz"><i class="fas fa-home" alt="Home"></i><span>Home</span></a>
+ </li>
+
+ <li>
+ <a href="https://blog.pyssg.xyz/"><i class="fas fa-book-open" alt="Blog"></i><span>Blog</span></a>
+ </li>
+
+ <li><i class="fab fa-git" alt="Git"></i><span>Git</span>
+ <ul>
+ <li><a href="https://git.luevano.xyz/" target="_blank"><i class="fab fa-git-alt" alt="Git-alt"></i></a></li>
+
+ <li><a href="https://github.com/luevano" target="_blank"><i class="fab fa-github" alt="Github"></i></a></li>
+
+ <li><a href="https://gitlab.com/dluevano" target="_blank"><i class="fab fa-gitlab" alt="Gitlab"></i></a></li>
+ </ul>
+ </li>
+ </ul>
+</nav>
+
+<button class="theme-switcher" onclick="toggleTheme()"><i class="fas fa-moon"></i><i class="fas fa-sun"></i></button>
+
+ </header>
+
+ <main>
+<h1>Posts filtered by test</h1>
+<p>Some text here.</p>
+
+<h2>Articles</h2>
+<ul>
+ <h3>December 2022</h3>
+ <li>Dec 15 - <a href="https://blog.pyssg.xyz/a/second.html">Second blog post for testing purposes</a></li>
+ <li>Dec 15 - <a href="https://blog.pyssg.xyz/first.html">First blog post for testing purposes</a></li>
+</ul>
+ </main>
+
+ <footer>
+<span>
+ <i class="fas fa-address-card" alt="Contact"></i>
+ <a href="https://blog.pyssg.xyz/contact.html">Contact</a>
+</span>
+
+<span>
+ <i class="fas fa-donate" alt="Donate"></i>
+ <a href="https://blog.pyssg.xyz/donate.html">Donate</a>
+</span>
+
+<span>
+ <i class="fas fa-rss" alt="RSS"></i>
+ <a target="_blank" href="https://blog.pyssg.xyz/rss.xml">RSS</a>
+</span>
+
+<br>
+<span class="created-with">
+ <i class="fas fa-hammer" alt="Hammer"></i>
+ Created with <a href="https://github.com/luevano/pyssg">pyssg</a>
+</span>
+
+<br>
+<span class="copyright">
+ Copyright <i class="far fa-copyright" alt="Copyright"></i> 2023 David Luévano Alvarado
+</span>
+
+ </footer>
+ </body>
+</html> \ No newline at end of file
diff --git a/pyssg.xyz/live/blog/tag/@update.html b/pyssg.xyz/live/blog/tag/@update.html
new file mode 100644
index 0000000..2a77416
--- /dev/null
+++ b/pyssg.xyz/live/blog/tag/@update.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<html class="theme-dark" lang="en
+"
+ prefix="og: https://ogp.me/ns#">
+ <head>
+ <base href="https://static.pyssg.xyz">
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="images/icons/favicon.ico">
+<title>Posts filtered by update -- pyssg blog</title>
+<meta name="description" content="PySSG blog, the python static site generator official blog."/>
+<link rel="alternate" type="application/rss+xml" href="https://blog.pyssg.xyz/rss.xml" title="pyssg blog RSS">
+ <!-- general style -->
+ <link rel="stylesheet" type="text/css" href="css/style.css">
+ <link rel="stylesheet" type="text/css" href="fork-awesome/css/fork-awesome.min.css">
+ <link rel="stylesheet" type="text/css" href="font-awesome/css/all.min.css">
+ <!-- theme related -->
+ <script type="text/javascript" src="scripts/theme.js"></script>
+ <link id="theme-css" rel="stylesheet" type="text/css" href="css/theme.css">
+ <!-- extra -->
+ <!-- og meta -->
+ <meta property="og:title" content="pyssg blog"/>
+ <meta property="og:type" content="article"/>
+ <meta property="og:url" content="https://blog.pyssg.xyz/tag/@update.html"/>
+ <meta property="og:image" content="https://static.pyssg.xyz/images/default.png"/>
+ <meta property="og:description" content="PySSG blog, the python static site generator official blog."/>
+ <meta property="og:locale" content="en"/>
+ <meta property="og:site_name" content="pyssg blog"/>
+ </head>
+
+ <body>
+ <header>
+<nav>
+ <ul>
+ <li>
+ <a href="https://blog.pyssg.xyz"><i class="fas fa-home" alt="Home"></i><span>Home</span></a>
+ </li>
+
+ <li>
+ <a href="https://blog.pyssg.xyz/"><i class="fas fa-book-open" alt="Blog"></i><span>Blog</span></a>
+ </li>
+
+ <li><i class="fab fa-git" alt="Git"></i><span>Git</span>
+ <ul>
+ <li><a href="https://git.luevano.xyz/" target="_blank"><i class="fab fa-git-alt" alt="Git-alt"></i></a></li>
+
+ <li><a href="https://github.com/luevano" target="_blank"><i class="fab fa-github" alt="Github"></i></a></li>
+
+ <li><a href="https://gitlab.com/dluevano" target="_blank"><i class="fab fa-gitlab" alt="Gitlab"></i></a></li>
+ </ul>
+ </li>
+ </ul>
+</nav>
+
+<button class="theme-switcher" onclick="toggleTheme()"><i class="fas fa-moon"></i><i class="fas fa-sun"></i></button>
+
+ </header>
+
+ <main>
+<h1>Posts filtered by update</h1>
+<p>Some text here.</p>
+
+<h2>Articles</h2>
+<ul>
+ <h3>December 2022</h3>
+ <li>Dec 15 - <a href="https://blog.pyssg.xyz/a/second.html">Second blog post for testing purposes</a></li>
+ <li>Dec 15 - <a href="https://blog.pyssg.xyz/first.html">First blog post for testing purposes</a></li>
+</ul>
+ </main>
+
+ <footer>
+<span>
+ <i class="fas fa-address-card" alt="Contact"></i>
+ <a href="https://blog.pyssg.xyz/contact.html">Contact</a>
+</span>
+
+<span>
+ <i class="fas fa-donate" alt="Donate"></i>
+ <a href="https://blog.pyssg.xyz/donate.html">Donate</a>
+</span>
+
+<span>
+ <i class="fas fa-rss" alt="RSS"></i>
+ <a target="_blank" href="https://blog.pyssg.xyz/rss.xml">RSS</a>
+</span>
+
+<br>
+<span class="created-with">
+ <i class="fas fa-hammer" alt="Hammer"></i>
+ Created with <a href="https://github.com/luevano/pyssg">pyssg</a>
+</span>
+
+<br>
+<span class="copyright">
+ Copyright <i class="far fa-copyright" alt="Copyright"></i> 2023 David Luévano Alvarado
+</span>
+
+ </footer>
+ </body>
+</html> \ No newline at end of file
diff --git a/pyssg.xyz/live/pyssg.xyz/404.html b/pyssg.xyz/live/pyssg.xyz/404.html
index 860c6b5..0dea386 100644
--- a/pyssg.xyz/live/pyssg.xyz/404.html
+++ b/pyssg.xyz/live/pyssg.xyz/404.html
@@ -35,6 +35,10 @@
<a href="https://pyssg.xyz"><i class="fas fa-home" alt="Home"></i><span>Home</span></a>
</li>
+ <li>
+ <a href="https://blog.pyssg.xyz/"><i class="fas fa-book-open" alt="Blog"></i><span>Blog</span></a>
+ </li>
+
<li><i class="fab fa-git" alt="Git"></i><span>Git</span>
<ul>
<li><a href="https://git.luevano.xyz/" target="_blank"><i class="fab fa-git-alt" alt="Git-alt"></i></a></li>
diff --git a/pyssg.xyz/live/pyssg.xyz/index.html b/pyssg.xyz/live/pyssg.xyz/index.html
index d82c082..4c8d4d7 100644
--- a/pyssg.xyz/live/pyssg.xyz/index.html
+++ b/pyssg.xyz/live/pyssg.xyz/index.html
@@ -35,6 +35,10 @@
<a href="https://pyssg.xyz"><i class="fas fa-home" alt="Home"></i><span>Home</span></a>
</li>
+ <li>
+ <a href="https://blog.pyssg.xyz/"><i class="fas fa-book-open" alt="Blog"></i><span>Blog</span></a>
+ </li>
+
<li><i class="fab fa-git" alt="Git"></i><span>Git</span>
<ul>
<li><a href="https://git.luevano.xyz/" target="_blank"><i class="fab fa-git-alt" alt="Git-alt"></i></a></li>
@@ -55,6 +59,8 @@
<h1>pyssg</h1>
<p>Welcome to the official pyssg website. This is as of now serving as a testing ground when I&rsquo;m making changes to it.</p>
+<h2 id="blog">Blog</h2>
+<p>You can find the blog (actually just a mock) <a href="https://blog.luevano.xyz">here</a>.</p>
<p>Get the RSS feed: <a href="https://pyssg.xyz/rss.xml">https://pyssg.xyz/rss.xml</a></p>
</main>
diff --git a/pyssg.xyz/live/pyssg.xyz/rss.xml b/pyssg.xyz/live/pyssg.xyz/rss.xml
index 9dab7bb..b1269cf 100644
--- a/pyssg.xyz/live/pyssg.xyz/rss.xml
+++ b/pyssg.xyz/live/pyssg.xyz/rss.xml
@@ -37,6 +37,8 @@
<pubDate>Tue, 13 Dec 2022 04:37:03 GMT</pubDate>
<description></description>
<content:encoded><![CDATA[<p>Welcome to the official pyssg website. This is as of now serving as a testing ground when I&rsquo;m making changes to it.</p>
+<h2 id="blog">Blog</h2>
+<p>You can find the blog (actually just a mock) <a href="https://blog.luevano.xyz">here</a>.</p>
<p>Get the RSS feed: <a href="https://pyssg.xyz/rss.xml">https://pyssg.xyz/rss.xml</a></p>]]></content:encoded>
</item>
</channel>
diff --git a/pyssg.xyz/live/pyssg.xyz/sitemap.xml b/pyssg.xyz/live/pyssg.xyz/sitemap.xml
index a9745f3..bbf8a85 100644
--- a/pyssg.xyz/live/pyssg.xyz/sitemap.xml
+++ b/pyssg.xyz/live/pyssg.xyz/sitemap.xml
@@ -10,7 +10,7 @@
</url>
<url>
<loc>https://pyssg.xyz/index.html</loc>
- <lastmod>2022-12-14</lastmod>
+ <lastmod>2022-12-15</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
diff --git a/pyssg.xyz/plt/blog/index.html b/pyssg.xyz/plt/blog/index.html
index 96d66ef..9086232 100644
--- a/pyssg.xyz/plt/blog/index.html
+++ b/pyssg.xyz/plt/blog/index.html
@@ -1,32 +1,71 @@
-<!DOCTYPE html>
-<html lang="en">
- <head>
- <meta charset="utf-8">
- <base href="{{config['url']['static']}}">
- <title>Index -- {{config['title']}}</title>
- </head>
- <body>
- <h1>Index -- {{config['title']}}</h1>
- <p>Some text here.</p>
-
- <p>Tags:
- {%for t in all_tags%}
- <a href="{{t[1]}}">{{t[0]}}</a>{{", " if not loop.last else ""}}
- {%endfor%}
- </p>
-
- <h2>Articles</h2>
- <ul>
- {%for p in all_pages%}
- {%if loop.previtem%}
- {%if loop.previtem.cdate_list_sep !=p.cdate_list_sep%}
- <h3>{{p.cdate_list_sep}}</h3>
- {%endif%}
- {%else%}
- <h3>{{p.cdate_list_sep}}</h3>
+{%extends "base.html"%}
+
+{%block html_lang%}
+{{config['lang']}}
+{%endblock html_lang%}
+
+{%block head_title%}
+<title>Index -- {{config['title']}}</title>
+{%endblock head_title%}
+
+{%block head_description%}
+<meta name="description" content="{{config['description']}}"/>
+{%endblock head_description%}
+
+{%block head_rss%}
+<link rel="alternate" type="application/rss+xml" href="{{config['url']['main']}}/rss.xml" title="{{config['title']}} RSS">
+{%endblock head_rss%}
+
+{%block head_extra%}
+{%endblock head_extra%}
+
+{%block head_og%}
+ <meta property="og:title" content="{{config['title']}}"/>
+ <meta property="og:type" content="article"/>
+ <meta property="og:url" content="{{config['url']['main']}}/index.html"/>
+ <meta property="og:image" content="{{config['url']['static']}}/{{config['url']['default_image']}}"/>
+ <meta property="og:description" content="{{config['description']}}"/>
+ <meta property="og:locale" content="{{config['lang']}}"/>
+ <meta property="og:site_name" content="{{config['title']}}"/>
+{%endblock head_og%}
+
+{%block body_header%}
+{%import 'body/header.html' as body_header%}
+{{body_header.print(config)}}
+{%endblock body_header%}
+
+{%block body_content%}
+<h1>Index -- {{config['title']}}</h1>
+<p>Some text here.</p>
+
+<p>Tags:
+{%for t in all_tags%}
+ <a href="{{t[1]}}">{{t[0]}}</a>{{", " if not loop.last else ""}}
+{%endfor%}
+</p>
+
+<h2>Articles</h2>
+<ul>
+{%for p in all_pages%}
+ {%if loop.previtem%}
+ {%if loop.previtem.cdate_list_sep !=p.cdate_list_sep%}
+ <h3>{{p.cdate_list_sep}}</h3>
{%endif%}
- <li>{{p.cdate_list}} - <a href="{{p.url}}">{{p.title}}</a></li>
- {%endfor%}
- </ul>
- </body>
-</html>
+ {%else%}
+ <h3>{{p.cdate_list_sep}}</h3>
+ {%endif%}
+ <li>{{p.cdate_list}} - <a href="{{p.url}}">{{p.title}}</a></li>
+{%endfor%}
+</ul>
+{%endblock body_content%}
+
+{%block body_footer%}
+{%import 'body/footer.html' as body_footer%}
+{{body_footer.contact(config)}}
+{{body_footer.donate(config)}}
+{{body_footer.rss(config)}}
+<br>
+{{body_footer.created_with()}}
+<br>
+{{body_footer.copyright()}}
+{%endblock body_footer%} \ No newline at end of file
diff --git a/pyssg.xyz/plt/blog/page.html b/pyssg.xyz/plt/blog/page.html
index d7f5e43..bd79b15 100644
--- a/pyssg.xyz/plt/blog/page.html
+++ b/pyssg.xyz/plt/blog/page.html
@@ -1,25 +1,64 @@
-<!DOCTYPE html>
-<html lang="{{page.lang}}">
- <head>
- <meta charset="utf-8">
- <base href="{{config['url']['static']}}">
- <title>{{page.title}} -- {{config['title']}}</title>
- </head>
- <body>
- <h1>{{page.title}}</h1>
- <p>By {{page.author}}</p>
- <p>Created: {{page.cdate}}</p>
- {%if page.mdate is not none%}
- <p>Modified: {{page.mdate}}</p>
- {%endif%}
-
- {{page.content}}
-
- <p>Tags:
- {%for t in page.tags%}
- <a href="{{t[1]}}">{{t[0]}}</a>{{", " if not loop.last else ""}}
- {%endfor%}
- </p>
- </body>
-</html>
+{%extends "base.html"%}
+{%block html_lang%}
+{{config['lang']}}
+{%endblock html_lang%}
+
+{%block head_title%}
+<title>{{page.title}} -- {{config['title']}}</title>
+{%endblock head_title%}
+
+{%block head_description%}
+<meta name="description" content="{{config['description']}}"/>
+{%endblock head_description%}
+
+{%block head_rss%}
+<link rel="alternate" type="application/rss+xml" href="{{config['url']['main']}}/rss.xml" title="{{config['title']}} RSS">
+{%endblock head_rss%}
+
+{%block head_extra%}
+{%endblock head_extra%}
+
+{%block head_og%}
+ <meta property="og:title" content="{{config['title']}}"/>
+ <meta property="og:type" content="article"/>
+ <meta property="og:url" content="{{config['url']['main']}}/{{page.name}}"/>
+ <meta property="og:image" content="{{config['url']['static']}}/{{config['url']['default_image']}}"/>
+ <meta property="og:description" content="{{config['description']}}"/>
+ <meta property="og:locale" content="{{config['lang']}}"/>
+ <meta property="og:site_name" content="{{config['title']}}"/>
+{%endblock head_og%}
+
+{%block body_header%}
+{%import 'body/header.html' as body_header%}
+{{body_header.print(config)}}
+{%endblock body_header%}
+
+{%block body_content%}
+ <h1>{{page.title}}</h1>
+
+ <p>By {{', '.join(page.author)}}</p>
+ <p>Created: {{page.cdate}}</p>
+ {%if page.mdate is not none%}
+ <p>Modified: {{page.mdate}}</p>
+ {%endif%}
+
+ {{page.content}}
+
+<p>Tags:
+{%for t in page.tags%}
+ <a href="{{t[1]}}">{{t[0]}}</a>{{", " if not loop.last else ""}}
+{%endfor%}
+</p>
+{%endblock body_content%}
+
+{%block body_footer%}
+{%import 'body/footer.html' as body_footer%}
+{{body_footer.contact(config)}}
+{{body_footer.donate(config)}}
+{{body_footer.rss(config)}}
+<br>
+{{body_footer.created_with()}}
+<br>
+{{body_footer.copyright()}}
+{%endblock body_footer%} \ No newline at end of file
diff --git a/pyssg.xyz/plt/blog/tag.html b/pyssg.xyz/plt/blog/tag.html
index 59cbdf1..53499b1 100644
--- a/pyssg.xyz/plt/blog/tag.html
+++ b/pyssg.xyz/plt/blog/tag.html
@@ -1,26 +1,65 @@
-<!DOCTYPE html>
-<html lang="en">
- <head>
- <meta charset="utf-8">
- <base href="{{config['url']['static']}}">
- <title>Posts filtered by {{tag[0]}} -- {{config['title']}}</title>
- </head>
- <body>
- <h1>Posts filtered by {{tag[0]}}</h1>
- <p>Some text here.</p>
-
- <h2>Articles</h2>
- <ul>
- {%for p in tag_pages%}
- {%if loop.previtem%}
- {%if loop.previtem.cdate_list_sep !=p.cdate_list_sep%}
- <h3>{{p.cdate_list_sep}}</h3>
- {%endif%}
- {%else%}
- <h3>{{p.cdate_list_sep}}</h3>
+{%extends "base.html"%}
+
+{%block html_lang%}
+{{config['lang']}}
+{%endblock html_lang%}
+
+{%block head_title%}
+<title>Posts filtered by {{tag[0]}} -- {{config['title']}}</title>
+{%endblock head_title%}
+
+{%block head_description%}
+<meta name="description" content="{{config['description']}}"/>
+{%endblock head_description%}
+
+{%block head_rss%}
+<link rel="alternate" type="application/rss+xml" href="{{config['url']['main']}}/rss.xml" title="{{config['title']}} RSS">
+{%endblock head_rss%}
+
+{%block head_extra%}
+{%endblock head_extra%}
+
+{%block head_og%}
+ <meta property="og:title" content="{{config['title']}}"/>
+ <meta property="og:type" content="article"/>
+ <meta property="og:url" content="{{tag[1]}}"/>
+ <meta property="og:image" content="{{config['url']['static']}}/{{config['url']['default_image']}}"/>
+ <meta property="og:description" content="{{config['description']}}"/>
+ <meta property="og:locale" content="{{config['lang']}}"/>
+ <meta property="og:site_name" content="{{config['title']}}"/>
+{%endblock head_og%}
+
+{%block body_header%}
+{%import 'body/header.html' as body_header%}
+{{body_header.print(config)}}
+{%endblock body_header%}
+
+{%block body_content%}
+<h1>Posts filtered by {{tag[0]}}</h1>
+<p>Some text here.</p>
+
+<h2>Articles</h2>
+<ul>
+{%for p in tag_pages%}
+ {%if loop.previtem%}
+ {%if loop.previtem.cdate_list_sep !=p.cdate_list_sep%}
+ <h3>{{p.cdate_list_sep}}</h3>
{%endif%}
- <li>{{p.cdate_list}} - <a href="{{p.url}}">{{p.title}}</a></li>
- {%endfor%}
- </ul>
- </body>
-</html>
+ {%else%}
+ <h3>{{p.cdate_list_sep}}</h3>
+ {%endif%}
+ <li>{{p.cdate_list}} - <a href="{{p.url}}">{{p.title}}</a></li>
+{%endfor%}
+</ul>
+{%endblock body_content%}
+
+{%block body_footer%}
+{%import 'body/footer.html' as body_footer%}
+{{body_footer.contact(config)}}
+{{body_footer.donate(config)}}
+{{body_footer.rss(config)}}
+<br>
+{{body_footer.created_with()}}
+<br>
+{{body_footer.copyright()}}
+{%endblock body_footer%} \ No newline at end of file
diff --git a/pyssg.xyz/plt/body/header.html b/pyssg.xyz/plt/body/header.html
index 9b38511..368eab3 100644
--- a/pyssg.xyz/plt/body/header.html
+++ b/pyssg.xyz/plt/body/header.html
@@ -5,6 +5,10 @@
<a href="{{config['url']['main']}}"><i class="fas fa-home" alt="Home"></i><span>Home</span></a>
</li>
+ <li>
+ <a href="https://blog.pyssg.xyz/"><i class="fas fa-book-open" alt="Blog"></i><span>Blog</span></a>
+ </li>
+
<li><i class="fab fa-git" alt="Git"></i><span>Git</span>
<ul>
<li><a href="https://git.luevano.xyz/" target="_blank"><i class="fab fa-git-alt" alt="Git-alt"></i></a></li>
diff --git a/pyssg.xyz/src/blog/a/second.md b/pyssg.xyz/src/blog/a/second.md
new file mode 100644
index 0000000..1dce357
--- /dev/null
+++ b/pyssg.xyz/src/blog/a/second.md
@@ -0,0 +1,14 @@
+title: Second blog post for testing purposes
+author: David Luévano
+ Someone Else
+lang: en
+summary: This is just a post used for testing (the second).
+tags: test
+ english
+ short
+ update
+ multiple-author
+
+A second "blog entry" for testing purposes which uses multiple authors and is inside a subdirectory.
+
+Added a modification here after first submission. \ No newline at end of file
diff --git a/pyssg.xyz/src/pyssg.xyz/index.md b/pyssg.xyz/src/pyssg.xyz/index.md
index 31a068c..27371cd 100644
--- a/pyssg.xyz/src/pyssg.xyz/index.md
+++ b/pyssg.xyz/src/pyssg.xyz/index.md
@@ -2,4 +2,8 @@ title: pyssg
Welcome to the official pyssg website. This is as of now serving as a testing ground when I'm making changes to it.
+## Blog
+
+You can find the blog (actually just a mock) [here](https://blog.luevano.xyz).
+
Get the RSS feed: [https://pyssg.xyz/rss.xml](https://pyssg.xyz/rss.xml) \ No newline at end of file
diff --git a/src/pyssg/configuration.py b/src/pyssg/configuration.py
index d7c32ae..b68930c 100644
--- a/src/pyssg/configuration.py
+++ b/src/pyssg/configuration.py
@@ -51,13 +51,14 @@ def __expand_all_paths(config: dict) -> None:
# not necessary to type deeper than the first dict
def get_parsed_config(path: str) -> list[dict]:
log.debug('reading config file "%s"', path)
- config: list[dict] = get_parsed_yaml(path)
+ config_all: list[dict] = get_parsed_yaml(path)
mandatory_config: list[dict] = get_parsed_yaml('mandatory_config.yaml', 'pyssg.plt')
- log.info('found %s document(s) for configuration "%s"', len(config), path)
+ log.info('found %s document(s) for configuration "%s"', len(config_all), path)
log.debug('checking that config file is well formed (at least contains mandatory fields')
- __check_well_formed_config(config[0], mandatory_config)
- __expand_all_paths(config[0])
- return config
+ for config in config_all:
+ __check_well_formed_config(config, mandatory_config)
+ __expand_all_paths(config)
+ return config_all
# not necessary to type deeper than the first dict,
diff --git a/src/pyssg/page.py b/src/pyssg/page.py
index 6a1ce54..32caadb 100644
--- a/src/pyssg/page.py
+++ b/src/pyssg/page.py
@@ -44,16 +44,14 @@ class Page:
self.cdate_rss: str
self.cdate_sitemap: str
- self.mdate: str
- self.mdate_list: str
- self.mdate_list_sep: str
- self.mdate_rss: str
- self.mdate_sitemap: str
-
- # later assigned references to next and previous pages
- # not always assigned (tail ends), and the None helps check it, ignoring
- self.next: Page = None # type: ignore
- self.previous: Page = None # type: ignore
+ self.mdate: str | None = None
+ self.mdate_list: str | None = None
+ self.mdate_list_sep: str | None = None
+ self.mdate_rss: str | None = None
+ self.mdate_sitemap: str | None = None
+
+ self.next: Page | None = None
+ self.previous: Page | None = None
# also from self.meta, but for og metadata
self.og: dict[str, str] = dict()