summaryrefslogtreecommitdiff
path: root/plt
diff options
context:
space:
mode:
Diffstat (limited to 'plt')
-rw-r--r--plt/art/index.html60
-rw-r--r--plt/art/page.html76
-rw-r--r--plt/art/page_list.html22
-rw-r--r--plt/art/page_list_entry.html5
-rw-r--r--plt/art/tag.html54
-rw-r--r--plt/base.html38
-rw-r--r--plt/blog/index.html60
-rw-r--r--plt/blog/page.html81
-rw-r--r--plt/blog/page_list.html15
-rw-r--r--plt/blog/tag.html54
-rw-r--r--plt/body/footer.html33
-rw-r--r--plt/body/header.html35
-rw-r--r--plt/highlightjs.html9
-rw-r--r--plt/page_nav.html28
-rw-r--r--plt/root_page.html52
-rw-r--r--plt/rss.xml39
-rw-r--r--plt/sitemap.xml65
-rw-r--r--plt/tag_list.html9
18 files changed, 735 insertions, 0 deletions
diff --git a/plt/art/index.html b/plt/art/index.html
new file mode 100644
index 0000000..87c083d
--- /dev/null
+++ b/plt/art/index.html
@@ -0,0 +1,60 @@
+{%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="Index -- {{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>Here is where I will post all of my drawings, sketches and more art related stuff. Right now this is managed similar to the <a href="https://blog.luevano.xyz" alt="Luévano's Blog">blog</a>, but more "gallery" oriented. The structure is kind of a 3-level zoom, where you see all the images in this index (or on a tag index), then you see the whole image in its separate link with additional information and then you can see the raw image itself.</p>
+
+ <p>Get the RSS feed: <a target="_blank" href="{{config['url']['main']}}/rss.xml">{{config['url']['main']}}/rss.xml</a></p>
+
+ {%import "tag_list.html" as tag_list%}
+ {{tag_list.print(all_tags, "art-tags")}}
+
+ {%import "art/page_list.html" as page_list%}
+ {{page_list.print(all_pages)}}
+{%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/plt/art/page.html b/plt/art/page.html
new file mode 100644
index 0000000..837422e
--- /dev/null
+++ b/plt/art/page.html
@@ -0,0 +1,76 @@
+{%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%}
+{%if page.summary is not none%}
+ <meta name="description" content="{{page.summary}}"/>
+{%else%}
+ <meta name="description" content="{{config['description']}}"/>
+{%endif%}
+{%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_og%}
+ <meta property="og:title" content="{{page.title}} -- {{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']}}"/>
+{%if page.summary is not none%}
+ <meta property="og:description" content="{{page.summary}}"/>
+{%else%}
+ <meta property="og:description" content="{{config['description']}}"/>
+{%endif%}
+ <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>
+
+ <a class="zoom-in" href="{{page.image_url}}" alt="See raw.">
+ {%if page.summary is not none%}
+ <img src="{{page.image_url}}" alt="{{page.summary}}">
+ {%else%}
+ <img src="{{page.image_url}}">
+ {%endif%}
+ </a>
+
+ {{page.content}}
+
+ {%import "page_nav.html" as page_nav%}
+ {{page_nav.print(page, config, "art-nav")}}
+
+ <hr>
+ <div class="art-info">
+ <p>By {{', '.join(page.author)}}</p>
+ <p>Posted: {{page.cdate}}</p>
+ {%import "tag_list.html" as tag_list%}
+ {{tag_list.print(page.tags, "art-tags")}}
+ </div>
+{%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/plt/art/page_list.html b/plt/art/page_list.html
new file mode 100644
index 0000000..c634bcf
--- /dev/null
+++ b/plt/art/page_list.html
@@ -0,0 +1,22 @@
+{%macro print(pages)%}
+{%import "art/page_list_entry.html" as art_entry%}
+<div class="art-grid">
+ {%for p in pages%}
+ {%if p.meta['tall'] is defined%}
+ {%if p.meta['wide'] is defined%}
+ {{art_entry.print(p, 'tall wide')}}
+ {%else%}
+ {{art_entry.print(p, 'tall')}}
+ {%endif%}
+ {%elif p.meta['wide'] is defined%}
+ {%if p.meta['tall'] is defined%}
+ {{art_entry.print(p, 'tall wide')}}
+ {%else%}
+ {{art_entry.print(p, 'tall')}}
+ {%endif%}
+ {%else%}
+ {{art_entry.print(p)}}
+ {%endif%}
+ {%endfor%}
+</div>
+{%endmacro%}
diff --git a/plt/art/page_list_entry.html b/plt/art/page_list_entry.html
new file mode 100644
index 0000000..1790025
--- /dev/null
+++ b/plt/art/page_list_entry.html
@@ -0,0 +1,5 @@
+{%macro print(page, class='')%}
+<a class="zoom-in {{class}}" href="{{page.url}}" alt="{{page.title}}">
+ <img src="{{page.image_url}}" alt="{{page.title}}">
+</a>
+{%endmacro%}
diff --git a/plt/art/tag.html b/plt/art/tag.html
new file mode 100644
index 0000000..8881998
--- /dev/null
+++ b/plt/art/tag.html
@@ -0,0 +1,54 @@
+{%extends "base.html"%}
+
+{%block html_lang%}
+{{config['lang']}}
+{%endblock html_lang%}
+
+{%block head_title%}
+<title>Art filtered by {{tag[0]}} -- {{config['title']}}</title>
+{%endblock head_title%}
+
+{%block head_description%}
+<meta name="description" content="Posts filtered by {{tag[0]}}"/>
+{%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="Art filtered by {{tag[0]}}"/>
+ <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>Art filtered by {{tag[0]}}</h1>
+
+ {%import "art/page_list.html" as page_list%}
+ {{page_list.print(tag_pages)}}
+
+{%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/plt/base.html b/plt/base.html
new file mode 100644
index 0000000..d5cb77b
--- /dev/null
+++ b/plt/base.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html class="theme-dark" lang="{%block html_lang%}{%endblock html_lang%}"
+ prefix="og: https://ogp.me/ns#">
+ <head>
+ <base href="{{config['url']['static']}}">
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="icon" href="images/icons/favicon.ico">
+ {%block head_title%}{%endblock head_title%}
+ {%block head_description%}{%endblock head_description%}
+ {%block head_rss%}{%endblock head_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 -->
+ {%block head_extra%}{%endblock head_extra%}
+ <!-- og meta -->
+ {%block head_og%}{%endblock head_og%}
+ </head>
+
+ <body>
+ <header>
+ {%block body_header%}{%endblock body_header%}
+ </header>
+
+ <main>
+ {%block body_content%}{%endblock body_content%}
+ </main>
+
+ <footer>
+ {%block body_footer%}{%endblock body_footer%}
+ </footer>
+ </body>
+</html> \ No newline at end of file
diff --git a/plt/blog/index.html b/plt/blog/index.html
new file mode 100644
index 0000000..e9a03cf
--- /dev/null
+++ b/plt/blog/index.html
@@ -0,0 +1,60 @@
+{%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="Index -- {{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>Welcome to my blog where I'll post whatever I please, ranging from rants to how-to's. Además, este pex va a estar en español e inglés porque quiero (no una mezcla en cada entrada, pero sí entradas completas en diferentes lenguajes).</p>
+
+ <p>Get the RSS feed: <a target="_blank" href="{{config['url']['main']}}/rss.xml">{{config['url']['main']}}/rss.xml</a></p>
+
+ {%import "tag_list.html" as tag_list%}
+ {{tag_list.print(all_tags, "article-tags")}}
+
+ {%import "blog/page_list.html" as page_list%}
+ {{page_list.print("Articles", all_pages)}}
+{%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/plt/blog/page.html b/plt/blog/page.html
new file mode 100644
index 0000000..71b4cfe
--- /dev/null
+++ b/plt/blog/page.html
@@ -0,0 +1,81 @@
+{%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%}
+{%if page.summary is not none%}
+ <meta name="description" content="{{page.summary}}"/>
+{%else%}
+ <meta name="description" content="{{config['description']}}"/>
+{%endif%}
+{%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%}
+{%import "highlightjs.html" as hljs%}
+{{hljs.print()}}
+{%endblock head_extra%}
+
+{%block gdscript_hl%}
+<!-- Specific to GDScript -->
+<script type="text/javascript" src="hl/languages/gdscript.min.js"></script>
+{%endblock gdscript_hl%}
+
+{%block head_og%}
+ <meta property="og:title" content="{{page.title}} -- {{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']}}"/>
+{%if page.summary is not none%}
+ <meta property="og:description" content="{{page.summary}}"/>
+{%else%}
+ <meta property="og:description" content="{{config['description']}}"/>
+{%endif%}
+ <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>
+
+ {{page.content}}
+
+ {%import "page_nav.html" as page_nav%}
+ {{page_nav.print(page, config, "page-nav")}}
+
+ <hr>
+ <div class="article-info">
+ <p>By {{', '.join(page.author)}}</p>
+ <p>Created: {{page.cdate}}</p>
+ {%if page.mdate is not none%}
+ <p>Modified: {{page.mdate}}</p>
+ {%endif%}
+ {%import "tag_list.html" as tag_list%}
+ {{tag_list.print(page.tags, "article-tags")}}
+ </div>
+{%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/plt/blog/page_list.html b/plt/blog/page_list.html
new file mode 100644
index 0000000..b818884
--- /dev/null
+++ b/plt/blog/page_list.html
@@ -0,0 +1,15 @@
+{%macro print(name, pages)%}
+ <h2>{{name}}</h2>
+ <ul class="page-list">
+ {%for p in 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>
+ {%endif%}
+ <li>{{p.cdate_list}} - <a href="{{p.url}}">{{p.title}}</a></li>
+ {%endfor%}
+ </ul>
+{%endmacro%}
diff --git a/plt/blog/tag.html b/plt/blog/tag.html
new file mode 100644
index 0000000..ec826bf
--- /dev/null
+++ b/plt/blog/tag.html
@@ -0,0 +1,54 @@
+{%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="Posts filtered by {{tag[0]}}"/>
+{%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="Posts filtered by {{tag[0]}}"/>
+ <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>
+
+ {%import "blog/page_list.html" as page_list%}
+ {{page_list.print("Articles", tag_pages)}}
+
+{%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/plt/body/footer.html b/plt/body/footer.html
new file mode 100644
index 0000000..32dcaf0
--- /dev/null
+++ b/plt/body/footer.html
@@ -0,0 +1,33 @@
+{%macro contact(config)%}
+<span>
+ <i class="fas fa-address-card" alt="Contact"></i>
+ <a href="{{config['url']['main']}}/contact.html">Contact</a>
+</span>
+{%endmacro%}
+
+{%macro donate(config)%}
+<span>
+ <i class="fas fa-donate" alt="Donate"></i>
+ <a href="{{config['url']['main']}}/donate.html">Donate</a>
+</span>
+{%endmacro%}
+
+{%macro rss(config)%}
+<span>
+ <i class="fas fa-rss" alt="RSS"></i>
+ <a target="_blank" href="{{config['url']['main']}}/rss.xml">RSS</a>
+</span>
+{%endmacro%}
+
+{%macro created_with()%}
+<span class="created-with">
+ <i class="fas fa-hammer" alt="Hammer"></i>
+ Created with <a href="https://github.com/luevano/pyssg">pyssg</a>
+</span>
+{%endmacro%}
+
+{%macro copyright()%}
+<span class="copyright">
+ Copyright <i class="far fa-copyright" alt="Copyright"></i> 2023 David Luévano Alvarado
+</span>
+{%endmacro%} \ No newline at end of file
diff --git a/plt/body/header.html b/plt/body/header.html
new file mode 100644
index 0000000..5ea4022
--- /dev/null
+++ b/plt/body/header.html
@@ -0,0 +1,35 @@
+{%macro print(config)%}
+<nav>
+ <ul>
+ <li>
+ <a href="https://luevano.xyz/"><i class="fas fa-home" alt="Home"></i><span>Home</span></a>
+ </li>
+
+ <li>
+ <a href="https://blog.luevano.xyz/"><i class="fas fa-book-open" alt="Blog"></i><span>Blog</span></a>
+ </li>
+
+ <li>
+ <a href="https://art.luevano.xyz/"><i class="fas fa-paint-brush" alt="Art"></i><span>Art</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>
+
+ <li><i class="fas fa-box-open" alt="Stuff"></i><span>Stuff</span>
+ <ul>
+ <li><a href="https://gb.luevano.xyz/"><i class="fas fa-gamepad" alt="Gameboy"></i><span>Gameboy</span></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>
+{%endmacro%} \ No newline at end of file
diff --git a/plt/highlightjs.html b/plt/highlightjs.html
new file mode 100644
index 0000000..0a1ded3
--- /dev/null
+++ b/plt/highlightjs.html
@@ -0,0 +1,9 @@
+{%macro print()%}
+<!-- highlight support for code blocks -->
+<script type="text/javascript" src="hl/highlight.min.js"></script>
+{%block gdscript_hl%}{%endblock gdscript_hl%}
+<script type="text/javascript">
+ hljs.initHighlightingOnLoad();
+</script>
+<link id="code-theme-css" rel="stylesheet" type="text/css" href="hl/styles/nord.min.css">
+{%endmacro%} \ No newline at end of file
diff --git a/plt/page_nav.html b/plt/page_nav.html
new file mode 100644
index 0000000..d182e53
--- /dev/null
+++ b/plt/page_nav.html
@@ -0,0 +1,28 @@
+{%macro print(page, config, div_class_name)%}
+<div class="{{div_class_name}}">
+ {%if page.next is not none%}
+ <span class="next">
+ <a href="{{page.next.url}}" alt="Next">
+ <i class="fas fa-arrow-left" alt="Arrow left"></i>
+ <span>Next</span>
+ </a>
+ </span>
+ {%endif%}
+
+ <span class="index">
+ <a href="{{config['url']['main']}}" alt="Index">
+ <i class="fas fa-home" alt="Home"></i>
+ <span>Index</span>
+ </a>
+ </span>
+
+ {%if page.previous is not none%}
+ <span class="previous">
+ <a href="{{page.previous.url}}" alt="Previous">
+ <i class="fas fa-arrow-right" alt="Arrow right"></i>
+ <span>Previous</span>
+ </a>
+ </span>
+ {%endif%}
+</div>
+{%endmacro%}
diff --git a/plt/root_page.html b/plt/root_page.html
new file mode 100644
index 0000000..ddc3ea0
--- /dev/null
+++ b/plt/root_page.html
@@ -0,0 +1,52 @@
+{%extends "base.html"%}
+
+{%block html_lang%}
+{{config['lang']}}
+{%endblock html_lang%}
+
+{%block head_title%}
+<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="https://blog.luevano.xyz/rss.xml" title="Luévano's Blog RSS">
+ <link rel="alternate" type="application/rss+xml" href="https://art.luevano.xyz/rss.xml" title="Luévano's Art 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>
+
+ {{page.content}}
+{%endblock body_content%}
+
+{%block body_footer%}
+{%import 'body/footer.html' as body_footer%}
+{{body_footer.contact(config)}}
+{{body_footer.donate(config)}}
+<br>
+{{body_footer.created_with()}}
+<br>
+{{body_footer.copyright()}}
+{%endblock body_footer%} \ No newline at end of file
diff --git a/plt/rss.xml b/plt/rss.xml
new file mode 100644
index 0000000..5f6231b
--- /dev/null
+++ b/plt/rss.xml
@@ -0,0 +1,39 @@
+<?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>{{config['title']}}</title>
+ <link>{{config['url']['main']}}</link>
+ <atom:link href="{{config['url']['main']}}/rss.xml" rel="self" type="application/rss+xml"/>
+ <description>{{config['description']}}</description>
+ <language>en-us</language>
+ <category>{{config['rss_gategory']}}</category>
+ <copyright>Copyright 2023 {{config['author']}}</copyright>
+ <managingEditor>{{config['author_email']}} ({{config['author']}})</managingEditor>
+ <webMaster>{{config['author_email']}} ({{config['author']}})</webMaster>
+ <pubDate>{{config['info']['rss_run_date']}}</pubDate>
+ <lastBuildDate>{{config['info']['rss_run_date']}}</lastBuildDate>
+ <generator>pyssg v{{config['info']['version']}}</generator>
+ <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
+ <ttl>30</ttl>
+ <image>
+ <url>{{config['url']['static']}}/{{config['url']['default_image']}}</url>
+ <title>{{config['title']}}</title>
+ <link>{{config['url']['main']}}</link>
+ </image>
+ {%for p in all_pages%}
+ <item>
+ <title>{{p.title}}</title>
+ <link>{{p.url}}</link>
+ <guid isPermaLink="true">{{p.url}}</guid>
+ <pubDate>{{p.cdate_rss}}</pubDate>
+ {%for t in p.tags%}
+ <category>{{t[0].lower().capitalize()}}</category>
+ {%endfor%}
+ <description>{{p.summary}}</description>
+ <content:encoded><![CDATA[{{p.content}}]]></content:encoded>
+ </item>
+ {%endfor%}
+ </channel>
+</rss>
diff --git a/plt/sitemap.xml b/plt/sitemap.xml
new file mode 100644
index 0000000..f7eaa47
--- /dev/null
+++ b/plt/sitemap.xml
@@ -0,0 +1,65 @@
+<?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://luevano.xyz/index.html</loc>
+ <lastmod>2022-12-16</lastmod>
+ <changefreq>monthly</changefreq>
+ <priority>1.0</priority>
+</url>
+<url>
+ <loc>https://luevano.xyz/contact.html</loc>
+ <lastmod>2022-12-16</lastmod>
+ <changefreq>monthly</changefreq>
+ <priority>1.0</priority>
+</url>
+<url>
+ <loc>https://luevano.xyz/donate.html</loc>
+ <lastmod>2022-12-16</lastmod>
+ <changefreq>monthly</changefreq>
+ <priority>1.0</priority>
+</url>
+<url>
+ <loc>https://blog.luevano.xyz</loc>
+ <lastmod>2022-12-16</lastmod>
+ <changefreq>daily</changefreq>
+ <priority>1.0</priority>
+</url>
+<url>
+ <loc>https://art.luevano.xyz</loc>
+ <lastmod>2022-12-16</lastmod>
+ <changefreq>daily</changefreq>
+ <priority>1.0</priority>
+</url>
+<url>
+ <loc>https://gb.luevano.xyz</loc>
+ <lastmod>2022-12-16</lastmod>
+ <changefreq>monthly</changefreq>
+ <priority>0.5</priority>
+</url>
+<url>
+ <loc>https://git.luevano.xyz</loc>
+ <lastmod>2022-12-16</lastmod>
+ <changefreq>daily</changefreq>
+ <priority>1.0</priority>
+</url>
+
+ {%for p in all_pages%}
+ <url>
+ <loc>{{p.url}}</loc>
+ <lastmod>{{p.mdate_sitemap if p.mdate_sitemap else p.cdate_sitemap}}</lastmod>
+ <changefreq>weekly</changefreq>
+ <priority>1.0</priority>
+ </url>
+ {%endfor%}
+
+ {%for t in all_tags%}
+ <url>
+ <loc>{{t[1]}}</loc>
+ <lastmod>{{config['info']['sitemap_run_date']}}</lastmod>
+ <changefreq>daily</changefreq>
+ <priority>0.5</priority>
+ </url>
+ {%endfor%}
+</urlset>
diff --git a/plt/tag_list.html b/plt/tag_list.html
new file mode 100644
index 0000000..8fbbdc5
--- /dev/null
+++ b/plt/tag_list.html
@@ -0,0 +1,9 @@
+{%macro print(tags, div_class_name)%}
+<div class="{{div_class_name}}">
+ <p>Tags:
+ {%for t in tags-%}
+ <a href="{{t[1]}}">{{t[0]}}</a>{{", " if not loop.last else ""}}
+ {%-endfor%}
+ </p>
+</div>
+{%endmacro%}