Change indenting to 1 tab (4 spaces)
It's more readable this way
This commit is contained in:
@ -1,251 +1,252 @@
|
||||
<!-- Taken from the https://carlschwan.eu/2020/12/29/adding-comments-to-your-static-blog-with-mastodon/ -->
|
||||
|
||||
{% if page.extra.comments.host %}
|
||||
{% set host = page.extra.comments.host %}
|
||||
{% set host = page.extra.comments.host %}
|
||||
{% else %}
|
||||
{% set host = config.extra.comments.host %}
|
||||
{% set host = config.extra.comments.host %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.extra.comments.user %}
|
||||
{% set username = page.extra.comments.user %}
|
||||
{% set username = page.extra.comments.user %}
|
||||
{% else %}
|
||||
{% set username = config.extra.comments.user %}
|
||||
{% set username = config.extra.comments.user %}
|
||||
{% endif %}
|
||||
|
||||
{% set id = page.extra.comments.id %}
|
||||
|
||||
<section id="comments">
|
||||
<img id="qrcode" class="no-hover pixels" alt="QR code to a Mastodon post"
|
||||
src="https://api.qrserver.com/v1/create-qr-code/?data=https://{{ host }}/@{{ username }}/{{ id }}">
|
||||
<h2>Comments</h2>
|
||||
<p>
|
||||
You can respond to this <a href="https://{{ host }}/@{{ username }}/{{ id }}">post</a> with an account on the
|
||||
Fediverse (e.g Mastodon, Akkoma, Sharkey or any Mastodon API compatible server).
|
||||
</p>
|
||||
<p>
|
||||
<small>
|
||||
Since Fediverse is decentralized, you can use your existing Mastodon API compatible account if you don't have an
|
||||
account on this server. Known non-private replies are displayed below.
|
||||
</small>
|
||||
</p>
|
||||
<img id="qrcode" class="no-hover pixels" alt="QR code to a Mastodon post"
|
||||
src="https://api.qrserver.com/v1/create-qr-code/?data=https://{{ host }}/@{{ username }}/{{ id }}">
|
||||
<h2>Comments</h2>
|
||||
<p>
|
||||
You can respond to this <a href="https://{{ host }}/@{{ username }}/{{ id }}">post</a> with an account on the
|
||||
Fediverse (e.g Mastodon, Akkoma, Sharkey or any Mastodon API compatible server).
|
||||
</p>
|
||||
<p>
|
||||
<small>
|
||||
Since Fediverse is decentralized, you can use your existing Mastodon API compatible account if you don't
|
||||
have an
|
||||
account on this server. Known non-private replies are displayed below.
|
||||
</small>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<a id="load-comments" class="inline-button" onclick="loadComments()">Load comments…</a>
|
||||
</p>
|
||||
<div id="comments-wrapper">
|
||||
<noscript>
|
||||
<p>
|
||||
Loading comments relies on JavaScript. Try enabling JavaScript and
|
||||
reloading, or visit
|
||||
<a href="https://{{ host }}/@{{ username }}/{{ id }}">
|
||||
the original post
|
||||
</a>
|
||||
on Mastodon.
|
||||
</p>
|
||||
</noscript>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
function escapeHtml(unsafe) {
|
||||
return unsafe
|
||||
.replace(/&/g, "&")
|
||||
.replace(/</g, "<")
|
||||
.replace(/>/g, ">")
|
||||
.replace(/"/g, """)
|
||||
.replace(/'/g, "'");
|
||||
}
|
||||
function emojify(input, emojis) {
|
||||
let output = input;
|
||||
<p>
|
||||
<a id="load-comments" class="inline-button" onclick="loadComments()">Load comments…</a>
|
||||
</p>
|
||||
<div id="comments-wrapper">
|
||||
<noscript>
|
||||
<p>
|
||||
Loading comments relies on JavaScript. Try enabling JavaScript and
|
||||
reloading, or visit
|
||||
<a href="https://{{ host }}/@{{ username }}/{{ id }}">
|
||||
the original post
|
||||
</a>
|
||||
on Mastodon.
|
||||
</p>
|
||||
</noscript>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
function escapeHtml(unsafe) {
|
||||
return unsafe
|
||||
.replace(/&/g, "&")
|
||||
.replace(/</g, "<")
|
||||
.replace(/>/g, ">")
|
||||
.replace(/"/g, """)
|
||||
.replace(/'/g, "'");
|
||||
}
|
||||
function emojify(input, emojis) {
|
||||
let output = input;
|
||||
|
||||
emojis.forEach((emoji) => {
|
||||
let picture = document.createElement("picture");
|
||||
emojis.forEach((emoji) => {
|
||||
let picture = document.createElement("picture");
|
||||
|
||||
let source = document.createElement("source");
|
||||
source.setAttribute("srcset", escapeHtml(emoji.url));
|
||||
source.setAttribute("media", "(prefers-reduced-motion: no-preference)");
|
||||
let source = document.createElement("source");
|
||||
source.setAttribute("srcset", escapeHtml(emoji.url));
|
||||
source.setAttribute("media", "(prefers-reduced-motion: no-preference)");
|
||||
|
||||
let img = document.createElement("img");
|
||||
img.className = "emoji";
|
||||
img.setAttribute("src", escapeHtml(emoji.static_url));
|
||||
img.setAttribute("alt", `:${emoji.shortcode}:`);
|
||||
img.setAttribute("title", `:${emoji.shortcode}:`);
|
||||
img.setAttribute("width", "20");
|
||||
img.setAttribute("height", "20");
|
||||
let img = document.createElement("img");
|
||||
img.className = "emoji";
|
||||
img.setAttribute("src", escapeHtml(emoji.static_url));
|
||||
img.setAttribute("alt", `:${emoji.shortcode}:`);
|
||||
img.setAttribute("title", `:${emoji.shortcode}:`);
|
||||
img.setAttribute("width", "20");
|
||||
img.setAttribute("height", "20");
|
||||
|
||||
picture.appendChild(source);
|
||||
picture.appendChild(img);
|
||||
picture.appendChild(source);
|
||||
picture.appendChild(img);
|
||||
|
||||
output = output.replace(`:${emoji.shortcode}:`, picture.outerHTML);
|
||||
});
|
||||
output = output.replace(`:${emoji.shortcode}:`, picture.outerHTML);
|
||||
});
|
||||
|
||||
return output;
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
function loadComments() {
|
||||
let commentsWrapper = document.getElementById("comments-wrapper");
|
||||
document.getElementById("load-comments").innerHTML = "Loading…";
|
||||
fetch("https://{{ host }}/api/v1/statuses/{{ id }}/context")
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (data) {
|
||||
let descendants = data["descendants"];
|
||||
if (
|
||||
descendants &&
|
||||
Array.isArray(descendants) &&
|
||||
descendants.length > 0
|
||||
) {
|
||||
commentsWrapper.innerHTML = "";
|
||||
function loadComments() {
|
||||
let commentsWrapper = document.getElementById("comments-wrapper");
|
||||
document.getElementById("load-comments").innerHTML = "Loading…";
|
||||
fetch("https://{{ host }}/api/v1/statuses/{{ id }}/context")
|
||||
.then(function (response) {
|
||||
return response.json();
|
||||
})
|
||||
.then(function (data) {
|
||||
let descendants = data["descendants"];
|
||||
if (
|
||||
descendants &&
|
||||
Array.isArray(descendants) &&
|
||||
descendants.length > 0
|
||||
) {
|
||||
commentsWrapper.innerHTML = "";
|
||||
|
||||
descendants.forEach(function (status) {
|
||||
console.log(descendants);
|
||||
if (status.account.display_name.length > 0) {
|
||||
status.account.display_name = escapeHtml(
|
||||
status.account.display_name
|
||||
);
|
||||
status.account.display_name = emojify(
|
||||
status.account.display_name,
|
||||
status.account.emojis
|
||||
);
|
||||
} else {
|
||||
status.account.display_name = status.account.username;
|
||||
}
|
||||
descendants.forEach(function (status) {
|
||||
console.log(descendants);
|
||||
if (status.account.display_name.length > 0) {
|
||||
status.account.display_name = escapeHtml(
|
||||
status.account.display_name
|
||||
);
|
||||
status.account.display_name = emojify(
|
||||
status.account.display_name,
|
||||
status.account.emojis
|
||||
);
|
||||
} else {
|
||||
status.account.display_name = status.account.username;
|
||||
}
|
||||
|
||||
let instance = "";
|
||||
if (status.account.acct.includes("@")) {
|
||||
instance = status.account.acct.split("@")[1];
|
||||
} else {
|
||||
instance = "{{ host }}";
|
||||
}
|
||||
let instance = "";
|
||||
if (status.account.acct.includes("@")) {
|
||||
instance = status.account.acct.split("@")[1];
|
||||
} else {
|
||||
instance = "{{ host }}";
|
||||
}
|
||||
|
||||
const isReply = status.in_reply_to_id !== "{{ id }}";
|
||||
const isReply = status.in_reply_to_id !== "{{ id }}";
|
||||
|
||||
let op = false;
|
||||
if (status.account.acct == "{{ username }}") {
|
||||
op = true;
|
||||
}
|
||||
let op = false;
|
||||
if (status.account.acct == "{{ username }}") {
|
||||
op = true;
|
||||
}
|
||||
|
||||
status.content = emojify(status.content, status.emojis);
|
||||
status.content = emojify(status.content, status.emojis);
|
||||
|
||||
let avatarSource = document.createElement("source");
|
||||
avatarSource.setAttribute(
|
||||
"srcset",
|
||||
escapeHtml(status.account.avatar)
|
||||
);
|
||||
avatarSource.setAttribute(
|
||||
"media",
|
||||
"(prefers-reduced-motion: no-preference)"
|
||||
);
|
||||
let avatarSource = document.createElement("source");
|
||||
avatarSource.setAttribute(
|
||||
"srcset",
|
||||
escapeHtml(status.account.avatar)
|
||||
);
|
||||
avatarSource.setAttribute(
|
||||
"media",
|
||||
"(prefers-reduced-motion: no-preference)"
|
||||
);
|
||||
|
||||
let avatarImg = document.createElement("img");
|
||||
avatarImg.className = "avatar";
|
||||
avatarImg.setAttribute(
|
||||
"src",
|
||||
escapeHtml(status.account.avatar_static)
|
||||
);
|
||||
avatarImg.setAttribute(
|
||||
"alt",
|
||||
`@${status.account.username}@${instance} avatar`
|
||||
);
|
||||
let avatarImg = document.createElement("img");
|
||||
avatarImg.className = "avatar";
|
||||
avatarImg.setAttribute(
|
||||
"src",
|
||||
escapeHtml(status.account.avatar_static)
|
||||
);
|
||||
avatarImg.setAttribute(
|
||||
"alt",
|
||||
`@${status.account.username}@${instance} avatar`
|
||||
);
|
||||
|
||||
let avatarPicture = document.createElement("picture");
|
||||
avatarPicture.appendChild(avatarSource);
|
||||
avatarPicture.appendChild(avatarImg);
|
||||
let avatarPicture = document.createElement("picture");
|
||||
avatarPicture.appendChild(avatarSource);
|
||||
avatarPicture.appendChild(avatarImg);
|
||||
|
||||
let avatar = document.createElement("a");
|
||||
avatar.className = "avatar-link";
|
||||
avatar.setAttribute("href", status.account.url);
|
||||
avatar.setAttribute("rel", "external nofollow");
|
||||
avatar.setAttribute(
|
||||
"title",
|
||||
`View profile at @${status.account.username}@${instance}`
|
||||
);
|
||||
avatar.appendChild(avatarPicture);
|
||||
let avatar = document.createElement("a");
|
||||
avatar.className = "avatar-link";
|
||||
avatar.setAttribute("href", status.account.url);
|
||||
avatar.setAttribute("rel", "external nofollow");
|
||||
avatar.setAttribute(
|
||||
"title",
|
||||
`View profile at @${status.account.username}@${instance}`
|
||||
);
|
||||
avatar.appendChild(avatarPicture);
|
||||
|
||||
let instanceBadge = document.createElement("a");
|
||||
instanceBadge.className = "instance";
|
||||
instanceBadge.setAttribute("href", status.account.url);
|
||||
instanceBadge.setAttribute(
|
||||
"title",
|
||||
`@${status.account.username}@${instance}`
|
||||
);
|
||||
instanceBadge.setAttribute("rel", "external nofollow");
|
||||
instanceBadge.textContent = instance;
|
||||
let instanceBadge = document.createElement("a");
|
||||
instanceBadge.className = "instance";
|
||||
instanceBadge.setAttribute("href", status.account.url);
|
||||
instanceBadge.setAttribute(
|
||||
"title",
|
||||
`@${status.account.username}@${instance}`
|
||||
);
|
||||
instanceBadge.setAttribute("rel", "external nofollow");
|
||||
instanceBadge.textContent = instance;
|
||||
|
||||
let display = document.createElement("span");
|
||||
display.className = "display";
|
||||
display.setAttribute("itemprop", "author");
|
||||
display.setAttribute("itemtype", "http://schema.org/Person");
|
||||
display.innerHTML = status.account.display_name;
|
||||
let display = document.createElement("span");
|
||||
display.className = "display";
|
||||
display.setAttribute("itemprop", "author");
|
||||
display.setAttribute("itemtype", "http://schema.org/Person");
|
||||
display.innerHTML = status.account.display_name;
|
||||
|
||||
let header = document.createElement("header");
|
||||
header.className = "author";
|
||||
header.appendChild(display);
|
||||
header.appendChild(instanceBadge);
|
||||
let header = document.createElement("header");
|
||||
header.className = "author";
|
||||
header.appendChild(display);
|
||||
header.appendChild(instanceBadge);
|
||||
|
||||
let permalink = document.createElement("a");
|
||||
permalink.setAttribute("href", status.url);
|
||||
permalink.setAttribute("itemprop", "url");
|
||||
permalink.setAttribute("title", `View comment at ${instance}`);
|
||||
permalink.setAttribute("rel", "external nofollow");
|
||||
permalink.textContent = new Date(
|
||||
status.created_at
|
||||
).toLocaleString("en-IE", {
|
||||
dateStyle: "long",
|
||||
timeStyle: "short",
|
||||
});
|
||||
let permalink = document.createElement("a");
|
||||
permalink.setAttribute("href", status.url);
|
||||
permalink.setAttribute("itemprop", "url");
|
||||
permalink.setAttribute("title", `View comment at ${instance}`);
|
||||
permalink.setAttribute("rel", "external nofollow");
|
||||
permalink.textContent = new Date(
|
||||
status.created_at
|
||||
).toLocaleString("en-IE", {
|
||||
dateStyle: "long",
|
||||
timeStyle: "short",
|
||||
});
|
||||
|
||||
let timestamp = document.createElement("time");
|
||||
timestamp.setAttribute("datetime", status.created_at);
|
||||
timestamp.appendChild(permalink);
|
||||
let timestamp = document.createElement("time");
|
||||
timestamp.setAttribute("datetime", status.created_at);
|
||||
timestamp.appendChild(permalink);
|
||||
|
||||
let main = document.createElement("main");
|
||||
main.setAttribute("itemprop", "text");
|
||||
main.innerHTML = status.content;
|
||||
let main = document.createElement("main");
|
||||
main.setAttribute("itemprop", "text");
|
||||
main.innerHTML = status.content;
|
||||
|
||||
let interactions = document.createElement("footer");
|
||||
let interactions = document.createElement("footer");
|
||||
|
||||
let faves = document.createElement("a");
|
||||
faves.className = "faves";
|
||||
faves.setAttribute("href", `${status.url}/favourites`);
|
||||
faves.setAttribute("title", `Favorites from ${instance}`);
|
||||
faves.textContent = status.favourites_count;
|
||||
interactions.appendChild(faves);
|
||||
let faves = document.createElement("a");
|
||||
faves.className = "faves";
|
||||
faves.setAttribute("href", `${status.url}/favourites`);
|
||||
faves.setAttribute("title", `Favorites from ${instance}`);
|
||||
faves.textContent = status.favourites_count;
|
||||
interactions.appendChild(faves);
|
||||
|
||||
let comment = document.createElement("article");
|
||||
comment.id = `comment-${status.id}`;
|
||||
comment.className = isReply ? "comment comment-reply" : "comment";
|
||||
comment.setAttribute("itemprop", "comment");
|
||||
comment.setAttribute("itemtype", "http://schema.org/Comment");
|
||||
comment.appendChild(avatar);
|
||||
comment.appendChild(header);
|
||||
comment.appendChild(timestamp);
|
||||
comment.appendChild(main);
|
||||
if (status.favourites_count > 0) {
|
||||
comment.appendChild(interactions);
|
||||
}
|
||||
let comment = document.createElement("article");
|
||||
comment.id = `comment-${status.id}`;
|
||||
comment.className = isReply ? "comment comment-reply" : "comment";
|
||||
comment.setAttribute("itemprop", "comment");
|
||||
comment.setAttribute("itemtype", "http://schema.org/Comment");
|
||||
comment.appendChild(avatar);
|
||||
comment.appendChild(header);
|
||||
comment.appendChild(timestamp);
|
||||
comment.appendChild(main);
|
||||
if (status.favourites_count > 0) {
|
||||
comment.appendChild(interactions);
|
||||
}
|
||||
|
||||
if (op === true) {
|
||||
comment.classList.add("op");
|
||||
if (op === true) {
|
||||
comment.classList.add("op");
|
||||
|
||||
avatar.classList.add("op");
|
||||
avatar.setAttribute(
|
||||
"title",
|
||||
"Blog post author; " + avatar.getAttribute("title")
|
||||
);
|
||||
avatar.classList.add("op");
|
||||
avatar.setAttribute(
|
||||
"title",
|
||||
"Blog post author; " + avatar.getAttribute("title")
|
||||
);
|
||||
|
||||
instanceBadge.classList.add("op");
|
||||
instanceBadge.setAttribute(
|
||||
"title",
|
||||
"Blog post author: " + instanceBadge.getAttribute("title")
|
||||
);
|
||||
}
|
||||
instanceBadge.classList.add("op");
|
||||
instanceBadge.setAttribute(
|
||||
"title",
|
||||
"Blog post author: " + instanceBadge.getAttribute("title")
|
||||
);
|
||||
}
|
||||
|
||||
commentsWrapper.innerHTML += comment.outerHTML;
|
||||
});
|
||||
}
|
||||
let loadCommentsButton = document.getElementById("load-comments");
|
||||
loadCommentsButton.remove();
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</section>
|
||||
commentsWrapper.innerHTML += comment.outerHTML;
|
||||
});
|
||||
}
|
||||
let loadCommentsButton = document.getElementById("load-comments");
|
||||
loadCommentsButton.remove();
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</section>
|
||||
|
@ -1,19 +1,20 @@
|
||||
<footer id="site-footer">
|
||||
{% if config.extra.footer.show_copyright %}
|
||||
<p title="Last built at {{ now() | date(format='%F %R %Z') }}">© {{ config.title }}, {{ now() | date(format="%Y") }}</p>
|
||||
{% endif %}
|
||||
{% if config.extra.footer.show_copyright %}
|
||||
<p title="Last built at {{ now() | date(format='%F %R %Z') }}">© {{ config.title }}, {{ now() | date(format="%Y") }}</p>
|
||||
{% endif %}
|
||||
|
||||
{% if config.extra.footer.show_source %}
|
||||
<p><a href="{{ config.extra.source_url }}">Website source</a></p>
|
||||
{% endif %}
|
||||
{% if config.extra.footer.show_source %}
|
||||
<p><a href="{{ config.extra.source_url }}">Website source</a></p>
|
||||
{% endif %}
|
||||
|
||||
{% if config.extra.footer.show_powered_by %}
|
||||
<p><small>Powered by <a href="https://www.getzola.org">Zola</a> and <a href="https://daudix.codeberg.page/duckquill">Duckquill</a></small></p>
|
||||
{% endif %}
|
||||
{% if config.extra.footer.show_powered_by %}
|
||||
<p><small>Powered by <a href="https://www.getzola.org">Zola</a> and <a href="https://daudix.codeberg.page/duckquill">Duckquill</a></small></p>
|
||||
{% endif %}
|
||||
|
||||
{% if config.extra.footer.show_johnvert %}
|
||||
<details><summary>Johnvertisement</summary>
|
||||
<iframe id="johnvertisement" title="Johnvertisement" src="https://john.citrons.xyz/embed?ref={{ config.extra.footer.johnvert_ref }}"></iframe>
|
||||
</details>
|
||||
{% endif %}
|
||||
{% if config.extra.footer.show_johnvert %}
|
||||
<details>
|
||||
<summary>Johnvertisement</summary>
|
||||
<iframe id="johnvertisement" title="Johnvertisement" src="https://john.citrons.xyz/embed?ref={{ config.extra.footer.johnvert_ref }}"></iframe>
|
||||
</details>
|
||||
{% endif %}
|
||||
</footer>
|
||||
|
@ -1,62 +1,60 @@
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="description" content="{{ config.description }}" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="theme-color" content="{{ config.extra.primary_color }}" />
|
||||
<link rel="canonical" href="{{ current_url | default(value='/') }}" />
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="description" content="{{ config.description }}" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="theme-color" content="{{ config.extra.primary_color }}" />
|
||||
<link rel="canonical" href="{{ current_url | default(value='/') }}" />
|
||||
|
||||
<title>
|
||||
{%- if page.title -%}
|
||||
{{- page.title }} - {{ config.title -}}
|
||||
{%- elif section.title -%}
|
||||
{{- section.title }} - {{ config.title -}}
|
||||
{%- else -%}
|
||||
{{- config.title -}}
|
||||
{%- endif -%}
|
||||
</title>
|
||||
<title>
|
||||
{%- if page.title -%}
|
||||
{{- page.title }} - {{ config.title -}}
|
||||
{%- elif section.title -%}
|
||||
{{- section.title }} - {{ config.title -}}
|
||||
{%- else -%}
|
||||
{{- config.title -}}
|
||||
{%- endif -%}
|
||||
</title>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="{{ get_url(path='style.css') }}" />
|
||||
<link rel="stylesheet" type="text/css" href="/syntax-theme-dark.css" media="(prefers-color-scheme: dark)" />
|
||||
<link rel="stylesheet" type="text/css" href="/syntax-theme-light.css" media="(prefers-color-scheme: light)" />
|
||||
{% if config.extra.stylesheets %}
|
||||
{% for stylesheet in config.extra.stylesheets %}
|
||||
<link rel="stylesheet" type="text/css" href="{{ get_url(path=stylesheet) }}" />
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
<link rel="stylesheet" type="text/css" href="{{ get_url(path='style.css') }}" />
|
||||
<link rel="stylesheet" type="text/css" href="/syntax-theme-dark.css" media="(prefers-color-scheme: dark)" />
|
||||
<link rel="stylesheet" type="text/css" href="/syntax-theme-light.css" media="(prefers-color-scheme: light)" />
|
||||
{% if config.extra.stylesheets %}
|
||||
{% for stylesheet in config.extra.stylesheets %}
|
||||
<link rel="stylesheet" type="text/css" href="{{ get_url(path=stylesheet) }}" />
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
<style type="text/css">
|
||||
:root {
|
||||
--primary-color-alpha: {{ config.extra.primary_color_alpha }};
|
||||
--primary-color: {{ config.extra.primary_color }};
|
||||
}
|
||||
</style>
|
||||
<style type="text/css">
|
||||
:root {
|
||||
--primary-color-alpha: {{ config.extra.primary_color_alpha }};
|
||||
--primary-color: {{ config.extra.primary_color }};
|
||||
}
|
||||
</style>
|
||||
|
||||
{% if page.extra.emoji_favicon %}
|
||||
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ page.extra.emoji_favicon }}</text></svg>">
|
||||
<link rel="apple-touch-icon" type="image/svg+xml" sizes="180x180" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ page.extra.emoji_favicon }}</text></svg>">
|
||||
{% elif section.extra.emoji_favicon %}
|
||||
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ section.extra.emoji_favicon }}</text></svg>">
|
||||
<link rel="apple-touch-icon" type="image/svg+xml" sizes="180x180" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ section.extra.emoji_favicon }}</text></svg>">
|
||||
{% elif config.extra.emoji_favicon %}
|
||||
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ config.extra.emoji_favicon }}</text></svg>">
|
||||
<link rel="apple-touch-icon" type="image/svg+xml" sizes="180x180" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ config.extra.emoji_favicon }}</text></svg>">
|
||||
{% elif config.extra.animated_favicon %}
|
||||
<link rel="icon" type="image/gif" href="{{ get_url(path='favicon.gif') }}" />
|
||||
<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="{{ get_url(path='apple-touch-icon.png') }}" />
|
||||
{% else %}
|
||||
<link rel="icon" type="image/png" href="{{ get_url(path='favicon.png') }}" />
|
||||
<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="{{ get_url(path='apple-touch-icon.png') }}" />
|
||||
{% endif %}
|
||||
<link rel="me" href="https://{{ config.extra.comments.host }}/@{{ config.extra.comments.user }}" />
|
||||
{% if page.extra.emoji_favicon %}
|
||||
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ page.extra.emoji_favicon }}</text></svg>">
|
||||
<link rel="apple-touch-icon" type="image/svg+xml" sizes="180x180" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ page.extra.emoji_favicon }}</text></svg>">
|
||||
{% elif section.extra.emoji_favicon %}
|
||||
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ section.extra.emoji_favicon }}</text></svg>">
|
||||
<link rel="apple-touch-icon" type="image/svg+xml" sizes="180x180" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ section.extra.emoji_favicon }}</text></svg>">
|
||||
{% elif config.extra.emoji_favicon %}
|
||||
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ config.extra.emoji_favicon }}</text></svg>">
|
||||
<link rel="apple-touch-icon" type="image/svg+xml" sizes="180x180" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text x=%22-.1em%22 y=%22.9em%22 font-size=%2290%22>{{ config.extra.emoji_favicon }}</text></svg>">
|
||||
{% elif config.extra.animated_favicon %}
|
||||
<link rel="icon" type="image/gif" href="{{ get_url(path='favicon.gif') }}" />
|
||||
<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="{{ get_url(path='apple-touch-icon.png') }}" />
|
||||
{% else %}
|
||||
<link rel="icon" type="image/png" href="{{ get_url(path='favicon.png') }}" />
|
||||
<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="{{ get_url(path='apple-touch-icon.png') }}" />
|
||||
{% endif %}
|
||||
<link rel="me" href="https://{{ config.extra.comments.host }}/@{{ config.extra.comments.user }}" />
|
||||
|
||||
<!-- Open Graph -->
|
||||
<meta property="og:site_name" content="{{ config.title }}" />
|
||||
<meta property="og:title" content="{%- if page.title -%} {{- page.title }} - {{ config.title -}}
|
||||
{%- elif section.title -%} {{- section.title }} - {{ config.title -}}
|
||||
{%- else -%} {{- config.title -}} {%- endif -%}" />
|
||||
<meta property="og:url" content="{{ current_url | default(value='/') }}" />
|
||||
<meta property="og:description" content="{{ page.description | default(value=config.description) }}" />
|
||||
<meta property="og:image" content="{{ get_url(path='card.png') }}" />
|
||||
<meta property="twitter:card" content="summary_large_image" />
|
||||
<!-- Open Graph -->
|
||||
<meta property="og:site_name" content="{{ config.title }}" />
|
||||
<meta property="og:title" content="{%- if page.title -%}{{- page.title }} - {{ config.title -}}{%- elif section.title -%}{{- section.title }} - {{ config.title -}}{%- else -%}{{- config.title -}}{%- endif -%}" />
|
||||
<meta property="og:url" content="{{ current_url | default(value='/') }}" />
|
||||
<meta property="og:description" content="{{ page.description | default(value=config.description) }}" />
|
||||
<meta property="og:image" content="{{ get_url(path='card.png') }}" />
|
||||
<meta property="twitter:card" content="summary_large_image" />
|
||||
</head>
|
||||
|
@ -1,25 +1,24 @@
|
||||
<header id="site-nav">
|
||||
<nav>
|
||||
<a href="#main" id="main-content" tabindex="0">Skip to main content</a>
|
||||
<ul>
|
||||
<li id="home">
|
||||
<a href="{{ get_url(path='') }}">{{ config.title }}</a>
|
||||
</li>
|
||||
{% for link in config.extra.nav.links %}
|
||||
<li>
|
||||
<a href="{{ link.url | safe | replace(from='$BASE_URL', to=get_url(path='')) | safe }}">{{ link.name }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% if config.extra.nav.show_feed %}
|
||||
<li id="feed">
|
||||
<a href="{{ get_url(path='') }}/{{ config.feed_filename }}">
|
||||
<svg width="16" height="16" fill="currentColor" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M1.988 1.988V3c.008.547.453.984 1 .988.004-.004.008-.004.012-.004v.028A8.977 8.977 0 0 1 11.988 13a.991.991 0 0 0 1 .984h1V13h-.004c0-.004 0-.004.004-.008C13.984 7.02 9.184 2.148 3.242 2.02A1.004 1.004 0 0 0 3 1.988v-.004zm0 4V7c.008.547.453.984 1 .988.004-.004.008-.004.012-.004V8a4.985 4.985 0 0 1 4.996 4.844 1.002 1.002 0 0 0 .988 1.145c.008-.005.012-.005.016-.005v.004h.984V13H10c0-3.793-3.047-6.898-6.82-6.992 0-.004-.004-.004-.004-.004A.892.892 0 0 0 3 5.988v-.004zm2 4a1.999 1.999 0 1 0-.002 3.998 1.999 1.999 0 0 0 .002-3.998m0 0" />
|
||||
</svg>
|
||||
<span>Feed</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</nav>
|
||||
<nav>
|
||||
<a href="#main" id="main-content" tabindex="0">Skip to main content</a>
|
||||
<ul>
|
||||
<li id="home">
|
||||
<a href="{{ get_url(path='') }}">{{ config.title }}</a>
|
||||
</li>
|
||||
{% for link in config.extra.nav.links %}
|
||||
<li>
|
||||
<a href="{{ link.url | safe | replace(from='$BASE_URL', to=get_url(path='')) | safe }}">{{ link.name
|
||||
}}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% if config.extra.nav.show_feed %}
|
||||
<li id="feed">
|
||||
<a href="{{ get_url(path='') }}/{{ config.feed_filename }}">
|
||||
<svg width="16" height="16" fill="currentColor" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M1.988 1.988V3c.008.547.453.984 1 .988.004-.004.008-.004.012-.004v.028A8.977 8.977 0 0 1 11.988 13a.991.991 0 0 0 1 .984h1V13h-.004c0-.004 0-.004.004-.008C13.984 7.02 9.184 2.148 3.242 2.02A1.004 1.004 0 0 0 3 1.988v-.004zm0 4V7c.008.547.453.984 1 .988.004-.004.008-.004.012-.004V8a4.985 4.985 0 0 1 4.996 4.844 1.002 1.002 0 0 0 .988 1.145c.008-.005.012-.005.016-.005v.004h.984V13H10c0-3.793-3.047-6.898-6.82-6.992 0-.004-.004-.004-.004-.004A.892.892 0 0 0 3 5.988v-.004zm2 4a1.999 1.999 0 1 0-.002 3.998 1.999 1.999 0 0 0 .002-3.998m0 0" /></svg>
|
||||
<span>Feed</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
Reference in New Issue
Block a user