Initial commit

This commit is contained in:
dichgrem
2025-03-05 21:03:18 +08:00
parent 058f5dedd5
commit ecb6a492cf
168 changed files with 12590 additions and 0 deletions

16
templates/404.html Normal file
View File

@ -0,0 +1,16 @@
{% extends "index.html" %}
{% block title %}
404 | {{ config.title }}
{% endblock title %}
{% block header_menu %}
{{ menu_macros::menu_for(config=config, current_item="") }}
{% endblock header_menu %}
{% block content %}
<div class="post">
<h1 class="post-title">{% block heading %}Lost?{% endblock heading %}</h1>
<p>{% block message %}This page does not exist.{% endblock message %}</p>
</div>
{% endblock content %}

15
templates/archive.html Normal file
View File

@ -0,0 +1,15 @@
{% extends "index.html" %}
{%- block title -%}
{{ title_macros::title(page_title=page.title, main_title=config.title) }}
{%- endblock -%}
{% block content %}
<div class="post">
<h1 class="post-title">{{ page.title }}</h1>
{% set section = get_section(path="_index.md") %}
{{ post_macros::list_posts(pages=section.pages) }}
</div>
{% endblock content %}

54
templates/atom.xml Executable file
View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/rss-style.xslt" 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 rel="self" type="application/atom+xml" href="{{ feed_url | safe }}"/>
<link rel="alternate" type="text/html" 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>
{% for author in page.authors %}
<author>
<name>
{{ author }}
</name>
</author>
{% else %}
<author>
<name>
{%- if config.author -%}
{{ config.author }}
{%- else -%}
Unknown
{%- endif -%}
</name>
</author>
{% endfor %}
<link rel="alternate" type="text/html" href="{{ page.permalink | safe }}"/>
<id>{{ page.permalink | safe }}</id>
{% if page.summary %}
<summary type="html">{{ page.summary }}</summary>
{% else %}
<content type="html" xml:base="{{ page.permalink | escape_xml | safe }}">{{ page.content }}</content>
{% endif %}
</entry>
{%- endfor %}
</feed>

138
templates/index.html Normal file
View File

@ -0,0 +1,138 @@
{% import "macros/date.html" as date_macros -%}
{% import "macros/head.html" as head_macros -%}
{% import "macros/menu.html" as menu_macros -%}
{% import "macros/post.html" as post_macros -%}
{% import "macros/title.html" as title_macros -%}
<!DOCTYPE html>
<html lang="{%- if config.default_language -%}{{ config.default_language }}{%- else -%}en{%- endif -%}">
<head>
<title>{%- block title %}{{ config.title }}{% endblock title -%}</title>
{{ head_macros::head(config=config) }}
{%- block open_graph %}{{ head_macros::open_graph(config=config) }}{% endblock open_graph -%}
{%- if config.generate_feeds %}
{%- for feed in config.feed_filenames %}
{%- if feed is containing('atom') %}
<link rel="alternate" type="application/atom+xml" title="{{ config.title }} Atom Feed" href="{{ get_url(path=feed, trailing_slash=false, lang=lang) | safe }}" />
{%- endif %}
{%- if feed is containing('rss') %}
<link rel="alternate" type="application/rss+xml" title="{{ config.title }} RSS Feed" href="{{ get_url(path=feed, trailing_slash=false, lang=lang) | safe }}" />
{%- endif %}
{%- endfor %}
{% endif -%}
{# Favicon #}
{% if config.extra.favicon %}
<link rel="icon" type="image/png" href={{ config.extra.favicon }} />
{% endif %}
{%- block extra_head %}
{% endblock extra_head -%}
</head>
<body class="">
<div class="container">
{% block header %}
<header class="header">
<div class="header__inner">
<div class="header__logo">
{%- if config.extra.logo_home_link %}
{% set logo_link = config.extra.logo_home_link %}
{% else %}
{% set logo_link = config.base_url %}
{% endif -%}
<a href="{{ logo_link | safe }}" style="text-decoration: none;">
<div class="logo">
{% block logo_content %}
{%- if config.extra.logo_text %}
{{ config.extra.logo_text }}
{% else %}
Terminimal theme
{% endif -%}
{% endblock logo_content %}
</div>
</a>
</div>
</div>
{% block header_menu %}
{{ menu_macros::menu(config=config, current_path=current_path) }}
{% endblock header_menu %}
</header>
{% endblock header %}
<div class="content">
{% block content %}
<div class="posts">
{%- if paginator %}
{%- set show_pages = paginator.pages -%}
{% else %}
{%- set show_pages = section.pages -%}
{% endif -%}
{%- for page in show_pages %}
<div class="post on-list">
{{ post_macros::header(page=page) }}
{{ post_macros::content(page=page, summary=true, show_only_description=page.extra.show_only_description | default(value=false)) }}
</div>
{% endfor -%}
<div class="pagination">
<div class="pagination__buttons">
{%- if paginator.previous %}
<span class="button previous">
<a href="{{ paginator.previous | safe }}">
<span class="button__icon"></span>&nbsp;
<span class="button__text">Newer posts</span>
</a>
</span>
{% endif -%}
{%- if paginator.next %}
<span class="button next">
<a href="{{ paginator.next | safe }}">
<span class="button__text">Older posts</span>&nbsp;
<span class="button__icon"></span>
</a>
</span>
{% endif -%}
</div>
</div>
</div>
{% endblock content %}
</div>
{% block footer %}
<footer class="footer">
<div class="footer__inner">
{%- if config.extra.copyright_html %}
<div class="copyright copyright--user">{{ config.extra.copyright_html | safe }}</div>
{% else %}
<div class="copyright">
{%- if config.extra.author %}
<span>© {{ date_macros::now_year() }} {{ config.extra.author }}</span>
{% else %}
<span>© {{ date_macros::now_year() }} Powered by <a href="https://www.getzola.org/">Zola</a></span>
{% endif -%}
<span class="copyright-theme">
<span class="copyright-theme-sep"> :: CC BY-SA 4.0 :: A friend comes from distant lands</span>
</a>
</span>
</div>
{% endif -%}
</div>
</footer>
{% endblock footer %}
</div>
{%- block extra_body %}
{% endblock extra_body -%}
</body>
</html>

5
templates/links.html Normal file
View File

@ -0,0 +1,5 @@
{% extends "index.html" %}
{% block main_content %}
{% endblock main_content %}

View File

@ -0,0 +1,3 @@
{% macro now_year() %}
{{ now() | date(format="%Y") }}
{% endmacro %}

View File

@ -0,0 +1,97 @@
{% import "macros/title.html" as title_macros -%}
{% macro head(config) %}
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<meta name="robots" content="noodp"/>
<link rel="stylesheet" href="{{ get_url(path="style.css", trailing_slash=false) | safe }}">
{%- if config.extra.accent_color %}
<link rel="stylesheet" href="{{ get_url(path="color/" ~ config.extra.accent_color ~ ".css", trailing_slash=false) | safe }}">
{% else %}
<link rel="stylesheet" href="{{ get_url(path="color/blue.css", trailing_slash=false) | safe }}">
{% endif -%}
{%- if config.extra.background_color %}
{%- if config.extra.accent_color and config.extra.background_color != config.extra.accent_color %}
<link rel="stylesheet" href="{{ get_url(path="color/background_" ~ config.extra.background_color ~ ".css", trailing_slash=false) | safe }}">
{% endif -%}
{% endif -%}
{%- if config.extra.use_full_hack_font == "exo2" %}
<link rel="stylesheet" href="{{ get_url(path="font-exo2.css", trailing_slash=false) | safe }}">
<link rel="stylesheet" href="{{ get_url(path="font-hack.css", trailing_slash=false) | safe }}">
{%- elif config.extra.use_full_hack_font %}
<link rel="stylesheet" href="{{ get_url(path="font-hack.css", trailing_slash=false) | safe }}">
{% else %}
<link rel="stylesheet" href="{{ get_url(path="font-hack-subset.css", trailing_slash=false) | safe }}">
{% endif -%}
{% endmacro head %}
{# Extra Meta tags for OpenGraph and Twitter cards #}
{% macro open_graph(config) %}
{%- if page %}
{%- set permalink = page.permalink %}
{%- set title = title_macros::title(page_title=page.title, main_title=config.title) %}
{%- set description = page.description %}
{%- set type = "article" %}
{%- if page.extra and page.extra.og_image %}
{%- if page.colocated_path %}
{%- set og_image = page.path ~ page.extra.og_image %}
{%- else %}
{%- set og_image = page.extra.og_image %}
{% endif %}
{%- elif config.extra.default_og_image %}
{%- set og_image = config.extra.default_og_image %}
{%- endif %}
{%- elif section %}
{%- set permalink = section.permalink %}
{%- set title = title_macros::title(page_title=section.title, main_title=config.title) %}
{%- set description = section.description | default(value=config.description) %}
{%- set type = "website" %}
{%- if section.extra and section.extra.og_image %}
{%- set og_image = section.extra.og_image %}
{%- elif config.extra.default_og_image %}
{%- set og_image = config.extra.default_og_image %}
{%- endif %}
{%- else %}
{# For 404 and taxonomy pages #}
{%- if taxonomy %}
{% if term %}
{%- set permalink = term.permalink %}
{%- set title = title_macros::title(page_title=term.name, main_title=config.title) %}
{%- set description = "All posts tagged " ~ term.name %}
{% else %}
{%- set permalink = config.base_url ~ "/" ~ taxonomy.slug %}
{%- set title = title_macros::title(page_title=taxonomy.name, main_title=config.title) %}
{%- set description = "All " ~ taxonomy.name %}
{% endif %}
{%- else %}
{%- set permalink = config.base_url %}
{%- set title = title_macros::title(page_title="404", main_title=config.title) %}
{%- set description = "Page not found" %}
{%- endif %}
{%- set type = "website" %}
{%- if config.extra.default_og_image %}
{%- set og_image = config.extra.default_og_image %}
{%- endif %}
{%- endif -%}{# #}
<meta name="description" content="{{ description | safe }}">
<meta property="og:description" content="{{ description | safe }}">
<meta property="og:title" content="{{ title | safe }}">
<meta property="og:type" content="{{ type }}">
<meta property="og:url" content="{{ permalink | safe }}">
{% if og_image %}
<meta property="og:image" content="{{ get_url(path=og_image) }}">
<meta name="twitter:image" content="{{ get_url(path=og_image) }}">
{% endif %}
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:description" content="{{ description | safe }}">
<meta name="twitter:title" content="{{ title | safe }}">
<meta property="twitter:domain" content="{{ config.base_url | replace(from="https://", to="") }}">
<meta property="twitter:url" content="{{ permalink | safe }}">
{% endmacro open_graph %}

View File

@ -0,0 +1,52 @@
{% macro menu(config, current_path) %}
{%- set current_item = false -%}
{%- if config.extra.menu_items %}
{%- set menu_items = config.extra.menu_items -%}
{%- for item in menu_items %}
{%- set abs_item_url = item.url | replace(from="$BASE_URL", to=config.base_url) -%}
{%- set is_current = current_url == abs_item_url ~ "/"
or current_url is starting_with(abs_item_url)
-%}
{%- set is_base = abs_item_url == config.base_url
or abs_item_url == config.base_url ~ "/"
-%}
{%- if is_base %}
{%- set_global base_item = item -%}
{% endif -%}
{%- if is_current and not is_base %}
{%- set_global current_item = item -%}
{% endif -%}
{% endfor -%}
{%- if not current_item and base_item %}
{# Did not match any menu URLs -- assume it's a blog post #}
{%- set current_item = base_item -%}
{% endif -%}
{{ menu_macros::menu_for(config=config, current_item=current_item) }}
{% endif -%}
{% endmacro menu %}
{% macro menu_for(config, current_item) %}
{%- if config.extra.menu_items %}
{%- set menu_items = config.extra.menu_items -%}
<nav class="menu">
<ul class="menu__inner">
{%- for item in menu_items %}
<li {%- if current_item and current_item == item %} class="active" {%- endif %}>
{%- if item.newtab -%}
<a href="{{ item.url | replace(from="$BASE_URL", to=config.base_url) | safe }}" target="_blank" rel="noopener noreferrer">{{ item.name | safe }}</a>
{%- else -%}
<a href="{{ item.url | replace(from="$BASE_URL", to=config.base_url) | safe }}">{{ item.name | safe }}</a>
{%- endif -%}
</li>
{% endfor -%}
</ul>
</nav>
{% endif -%}
{% endmacro menu %}

108
templates/macros/post.html Normal file
View File

@ -0,0 +1,108 @@
{% macro content(page, summary, show_only_description) %}
{%- if show_only_description %}
<div class="post-content">
{{ page.description | safe }}
</div>
{% elif summary and page.summary %}
<div class="post-content">
{{ page.summary | safe }}
</div>
<div>
<!-- &#xFE0E; -- force text style - some devices render this as emoji -->
<a class="read-more button" href="{{ page.permalink | safe }}">
<span class="button__text">Read more</span>&nbsp;
<span class="button__icon">&#8617;&#xFE0E;</span>
</a>
</div>
{% else %}
{#- full content -#}
<div class="post-content">
{{ page.content | safe }}
</div>
{%- endif %}
{% endmacro content %}
{% macro date(page) %}
<span class="post-date">
{%- if page.date %}
{{ page.date | date(format="%Y-%m-%d") }}
{% endif -%}
</span>
{% endmacro post_date %}
{% macro earlier_later(page) %}
{%- if config.extra.enable_post_view_navigation and page.lower or page.higher %}
<div class="pagination">
<div class="pagination__title">
<span class="pagination__title-h">{{ config.extra.post_view_navigation_prompt }}</span>
<hr />
</div>
<div class="pagination__buttons">
{%- if page.higher %}
<span class="button previous">
<a href="{{ page.higher.permalink | safe }}">
<span class="button__icon"></span>&nbsp;
<span class="button__text">{{ page.higher.title }}</span>
</a>
</span>
{% endif %}
{% if page.lower %}
<span class="button next">
<a href="{{ page.lower.permalink | safe }}">
<span class="button__text">{{ page.lower.title }}</span>&nbsp;
<span class="button__icon"></span>
</a>
</span>
{% endif -%}
</div>
</div>
{% endif -%}
{% endmacro earlier_later %}
{% macro header(page) %}
<h1 class="post-title"><a href="{{ page.permalink | safe }}">{{ page.title }}</a></h1>
<div class="post-meta-inline">
{{ post_macros::date(page=page) }}
</div>
{{ post_macros::tags(page=page) }}
{% endmacro header %}
{% macro list_posts(pages) %}
<ul>
{%- for page in pages %}
{%- if page.draft %}
{% continue %}
{% endif -%}
<li class="post-list">
<a href="{{ page.permalink | safe }}">
<span class="post-date">{{ page.date }}</span>
:: <span class="post-list-title">{{ page.title }}</span></a>
{{ post_macros::tags(page=page, short=true) }}
</li>
{% endfor -%}
</ul>
{% endmacro list_posts %}
{% macro tags(page, short=false) %}
{%- if page.taxonomies and page.taxonomies.tags %}
<span class="post-tags-inline">
{%- if short %}
::
{%- set sep = "," -%}
{% else %}
:: tags:&nbsp;
{%- set sep = "&nbsp;" -%}
{% endif -%}
{%- for tag in page.taxonomies.tags | sort | unique(case_sensitive=false) %}
<a class="post-tag" href="{{ get_taxonomy_url(kind='tags', name=tag) | safe }}">#{{ tag }}</a>
{%- if not loop.last %}{{ sep | safe }}{% endif -%}
{% endfor -%}
</span>
{% endif -%}
{% endmacro tags %}

View File

@ -0,0 +1,17 @@
{% macro title(page_title, main_title) %}
{%- if config.extra.page_titles and config.extra.page_titles == "combined" -%}
{%- if page_title -%}
{{ page_title }} | {{ main_title }}
{%- else -%}
{{ main_title }}
{%- endif -%}
{%- elif config.extra.page_titles and config.extra.page_titles == "page_only" -%}
{%- if page_title -%}
{{ page_title }}
{%- else -%}
{{ main_title }}
{%- endif -%}
{%- else -%}
{{ main_title }}
{%- endif -%}
{% endmacro title %}

13
templates/page.html Normal file
View File

@ -0,0 +1,13 @@
{% extends "index.html" %}
{%- block title -%}
{{ title_macros::title(page_title=page.title, main_title=config.title) }}
{%- endblock -%}
{% block content %}
<div class="post">
{{ post_macros::header(page=page) }}
{{ post_macros::content(page=page, summary=false, show_only_description=false) }}
{{ post_macros::earlier_later(page=page) }}
</div>
{% endblock content %}

21
templates/search.html Normal file
View File

@ -0,0 +1,21 @@
{% extends "index.html" %}
{% block title %}
Search | {{ config.title }}
{% endblock title %}
{% block header_menu %}
{{ menu_macros::menu_for(config=config, current_item="") }}
{% endblock header_menu %}
{% block content %}
<link href="/pagefind/pagefind-ui.css" rel="stylesheet">
<script src="/pagefind/pagefind-ui.js"></script>
<div id="search"></div>
<script>
window.addEventListener('DOMContentLoaded', (event) => {
new PagefindUI({ element: "#search", showSubResults: true });
});
</script>
{% endblock content %}

View File

@ -0,0 +1,8 @@
{% if src %}
<figure class="{% if position %}{{ position }}{% else -%} center {%- endif %}" >
<img src="{{ src | safe }}"{% if alt %} alt="{{ alt }}"{% endif %}{% if style %} style="{{ style }}"{% endif %} decoding="async" loading="lazy"/>
{% if caption %}
<figcaption class="{% if caption_position %}{{ caption_position }}{% else -%} center {%- endif %}"{% if caption_style %} style="{{ caption_style | safe }}"{% endif %}>{{ caption | markdown() | safe }}</figcaption>
{% endif %}
</figure>
{% endif %}

View File

@ -0,0 +1,8 @@
{% if src %}
{# If the image's URL is internal to the site... #}
{% if src is not starting_with("http") %}
{# ... then prepend the site's base URL to the image's URL. #}
{% set src = config.base_url ~ src %}
{% endif %}
<img src="{{ src | safe }}"{% if alt %} alt="{{ alt }}"{% endif %} class="{% if position %}{{ position }}{% else -%} center {%- endif %}" {%- if style %} style="{{ style | safe }}" {%- endif %} decoding="async" loading="lazy"/>
{% endif %}

21
templates/tags/list.html Normal file
View File

@ -0,0 +1,21 @@
{% extends "index.html" %}
{%- block title -%}
{{ title_macros::title(page_title="Tags", main_title=config.title) }}
{%- endblock -%}
{% block content %}
<div class="post">
<h1 class="post-title">all tags</h1>
<ul>
{% for term in terms %}
<li class="tag-list">
<a href="{{ term.permalink | safe }}">
{{ term.name }} ({{ term.pages | length }} post{{ term.pages | length | pluralize }})
</a>
</li>
{% endfor %}
</ul>
</div>
{% endblock content %}

View File

@ -0,0 +1,21 @@
{% extends "index.html" %}
{%- block title -%}
{% set title = "Tag: " ~ term.name %}
{{ title_macros::title(page_title=title, main_title=config.title) }}
{%- endblock -%}
{% block content %}
<div class="post">
<h1 class="post-title">
tag: #{{ term.name }}
({{ term.pages | length }} post{{ term.pages | length | pluralize }})
</h1>
<a href="{{ config.base_url | safe }}/tags">
Show all tags
</a>
{{ post_macros::list_posts(pages=term.pages) }}
</div>
{% endblock content %}

5
templates/weekly.html Normal file
View File

@ -0,0 +1,5 @@
{% extends "index.html" %}
{% block main_content %}
{% endblock main_content %}