2019-09-30 15:38:41 +03:00
|
|
|
---
|
2023-09-29 23:46:40 +03:00
|
|
|
layout: default
|
2021-12-13 16:55:19 +03:00
|
|
|
refactor: true
|
2022-09-12 23:13:15 +03:00
|
|
|
panel_includes:
|
2021-12-01 16:48:57 +03:00
|
|
|
- toc
|
|
|
|
tail_includes:
|
|
|
|
- related-posts
|
|
|
|
- post-nav
|
2021-12-10 16:12:52 +03:00
|
|
|
- comments
|
2019-09-30 15:38:41 +03:00
|
|
|
---
|
|
|
|
|
2023-05-06 02:22:29 +03:00
|
|
|
{% include lang.html %}
|
|
|
|
|
2024-10-11 17:32:10 +03:00
|
|
|
{% include toc-status.html %}
|
|
|
|
|
|
|
|
<article class="px-1" data-toc="{{ enable_toc }}">
|
2023-09-29 23:46:40 +03:00
|
|
|
<header>
|
|
|
|
<h1 data-toc-skip>{{ page.title }}</h1>
|
2024-03-18 13:50:05 +03:00
|
|
|
{% if page.description %}
|
|
|
|
<p class="post-desc fw-light mb-4">{{ page.description }}</p>
|
|
|
|
{% endif %}
|
2021-12-01 16:48:57 +03:00
|
|
|
|
2023-09-29 23:46:40 +03:00
|
|
|
<div class="post-meta text-muted">
|
|
|
|
<!-- published date -->
|
2023-09-08 17:48:37 +03:00
|
|
|
<span>
|
2023-09-29 23:46:40 +03:00
|
|
|
{{ site.data.locales[lang].post.posted }}
|
|
|
|
{% include datetime.html date=page.date tooltip=true lang=lang %}
|
2023-09-08 17:48:37 +03:00
|
|
|
</span>
|
2022-04-25 22:03:34 +03:00
|
|
|
|
2023-09-29 23:46:40 +03:00
|
|
|
<!-- lastmod date -->
|
|
|
|
{% if page.last_modified_at and page.last_modified_at != page.date %}
|
|
|
|
<span>
|
|
|
|
{{ site.data.locales[lang].post.updated }}
|
|
|
|
{% include datetime.html date=page.last_modified_at tooltip=true lang=lang %}
|
|
|
|
</span>
|
2022-12-11 02:09:40 +03:00
|
|
|
{% endif %}
|
|
|
|
|
2023-09-29 23:46:40 +03:00
|
|
|
{% if page.image %}
|
|
|
|
{% capture src %}src="{{ page.image.path | default: page.image }}"{% endcapture %}
|
|
|
|
{% capture class %}class="preview-img{% if page.image.no_bg %}{{ ' no-bg' }}{% endif %}"{% endcapture %}
|
|
|
|
{% capture alt %}alt="{{ page.image.alt | xml_escape | default: "Preview Image" }}"{% endcapture %}
|
2022-04-25 20:43:40 +03:00
|
|
|
|
2023-09-29 23:46:40 +03:00
|
|
|
{% if page.image.lqip %}
|
|
|
|
{%- capture lqip -%}lqip="{{ page.image.lqip }}"{%- endcapture -%}
|
2023-09-08 17:48:37 +03:00
|
|
|
{% endif %}
|
|
|
|
|
2023-09-29 23:46:40 +03:00
|
|
|
<div class="mt-3 mb-3">
|
|
|
|
<img {{ src }} {{ class }} {{ alt }} w="1200" h="630" {{ lqip }}>
|
|
|
|
{%- if page.image.alt -%}
|
|
|
|
<figcaption class="text-center pt-2 pb-2">{{ page.image.alt }}</figcaption>
|
|
|
|
{%- endif -%}
|
|
|
|
</div>
|
|
|
|
{% endif %}
|
2023-09-08 17:48:37 +03:00
|
|
|
|
2023-09-29 23:46:40 +03:00
|
|
|
<div class="d-flex justify-content-between">
|
|
|
|
<!-- author(s) -->
|
|
|
|
<span>
|
|
|
|
{% if page.author %}
|
|
|
|
{% assign authors = page.author %}
|
|
|
|
{% elsif page.authors %}
|
|
|
|
{% assign authors = page.authors %}
|
2023-09-08 17:48:37 +03:00
|
|
|
{% endif %}
|
2021-12-01 16:48:57 +03:00
|
|
|
|
2023-09-29 23:46:40 +03:00
|
|
|
{{ site.data.locales[lang].post.written_by }}
|
|
|
|
|
|
|
|
<em>
|
|
|
|
{% if authors %}
|
|
|
|
{% for author in authors %}
|
2023-12-06 17:38:11 +03:00
|
|
|
{% if site.data.authors[author].url -%}
|
|
|
|
<a href="{{ site.data.authors[author].url }}">{{ site.data.authors[author].name }}</a>
|
|
|
|
{%- else -%}
|
|
|
|
{{ site.data.authors[author].name }}
|
|
|
|
{%- endif %}
|
2023-09-29 23:46:40 +03:00
|
|
|
{% unless forloop.last %}{{ '</em>, <em>' }}{% endunless %}
|
|
|
|
{% endfor %}
|
|
|
|
{% else %}
|
|
|
|
<a href="{{ site.social.links[0] }}">{{ site.social.name }}</a>
|
|
|
|
{% endif %}
|
|
|
|
</em>
|
|
|
|
</span>
|
|
|
|
|
2024-02-25 21:50:41 +03:00
|
|
|
<div>
|
|
|
|
<!-- pageviews -->
|
|
|
|
{% if site.pageviews.provider and site.analytics[site.pageviews.provider].id %}
|
|
|
|
<span>
|
|
|
|
<em id="pageviews">
|
|
|
|
<i class="fas fa-spinner fa-spin small"></i>
|
|
|
|
</em>
|
|
|
|
{{ site.data.locales[lang].post.pageview_measure }}
|
|
|
|
</span>
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
<!-- read time -->
|
|
|
|
{% include read-time.html content=content prompt=true lang=lang %}
|
|
|
|
</div>
|
2023-09-29 23:46:40 +03:00
|
|
|
</div>
|
2021-12-04 01:56:33 +03:00
|
|
|
</div>
|
2023-09-29 23:46:40 +03:00
|
|
|
</header>
|
|
|
|
|
2024-10-11 17:32:10 +03:00
|
|
|
{% if enable_toc %}
|
|
|
|
<div id="toc-bar" class="d-flex align-items-center justify-content-between invisible">
|
|
|
|
<span class="label text-truncate">{{ page.title }}</span>
|
2024-10-19 16:13:21 +03:00
|
|
|
<button type="button" class="toc-trigger btn me-1">
|
2024-10-11 17:32:10 +03:00
|
|
|
<i class="fa-solid fa-list-ul fa-fw"></i>
|
|
|
|
</button>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<button id="toc-solo-trigger" type="button" class="toc-trigger btn btn-outline-secondary btn-sm">
|
|
|
|
<span class="label ps-2 pe-1">{{- site.data.locales[lang].panel.toc -}}</span>
|
|
|
|
<i class="fa-solid fa-angle-right fa-fw"></i>
|
|
|
|
</button>
|
|
|
|
|
|
|
|
<dialog id="toc-popup" class="p-0">
|
|
|
|
<div class="header d-flex flex-row align-items-center justify-content-between">
|
|
|
|
<div class="label text-truncate py-2 ms-4">{{- page.title -}}</div>
|
2024-10-19 16:13:21 +03:00
|
|
|
<button id="toc-popup-close" type="button" class="btn mx-1 my-1 opacity-75">
|
|
|
|
<i class="fas fa-close"></i>
|
2024-10-11 17:32:10 +03:00
|
|
|
</button>
|
|
|
|
</div>
|
|
|
|
<div id="toc-popup-content" class="px-4 py-3 pb-4"></div>
|
|
|
|
</dialog>
|
|
|
|
{% endif %}
|
|
|
|
|
2023-09-29 23:46:40 +03:00
|
|
|
<div class="content">
|
|
|
|
{{ content }}
|
2023-09-08 17:48:37 +03:00
|
|
|
</div>
|
2023-09-29 23:46:40 +03:00
|
|
|
|
|
|
|
<div class="post-tail-wrapper text-muted">
|
|
|
|
<!-- categories -->
|
|
|
|
{% if page.categories.size > 0 %}
|
|
|
|
<div class="post-meta mb-3">
|
|
|
|
<i class="far fa-folder-open fa-fw me-1"></i>
|
|
|
|
{% for category in page.categories %}
|
|
|
|
<a href="{{ site.baseurl }}/categories/{{ category | slugify | url_encode }}/">{{ category }}</a>
|
|
|
|
{%- unless forloop.last -%},{%- endunless -%}
|
|
|
|
{% endfor %}
|
|
|
|
</div>
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
<!-- tags -->
|
|
|
|
{% if page.tags.size > 0 %}
|
|
|
|
<div class="post-tags">
|
|
|
|
<i class="fa fa-tags fa-fw me-1"></i>
|
|
|
|
{% for tag in page.tags %}
|
|
|
|
<a
|
|
|
|
href="{{ site.baseurl }}/tags/{{ tag | slugify | url_encode }}/"
|
|
|
|
class="post-tag no-text-decoration"
|
|
|
|
>
|
|
|
|
{{- tag -}}
|
|
|
|
</a>
|
|
|
|
{% endfor %}
|
|
|
|
</div>
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
<div
|
|
|
|
class="
|
|
|
|
post-tail-bottom
|
|
|
|
d-flex justify-content-between align-items-center mt-5 pb-2
|
|
|
|
"
|
|
|
|
>
|
|
|
|
<div class="license-wrapper">
|
|
|
|
{% if site.data.locales[lang].copyright.license.template %}
|
|
|
|
{% capture _replacement %}
|
2023-05-06 02:22:29 +03:00
|
|
|
<a href="{{ site.data.locales[lang].copyright.license.link }}">
|
|
|
|
{{ site.data.locales[lang].copyright.license.name }}
|
2021-12-01 16:48:57 +03:00
|
|
|
</a>
|
|
|
|
{% endcapture %}
|
|
|
|
|
2023-09-29 23:46:40 +03:00
|
|
|
{{ site.data.locales[lang].copyright.license.template | replace: ':LICENSE_NAME', _replacement }}
|
|
|
|
{% endif %}
|
|
|
|
</div>
|
2020-02-17 18:44:10 +03:00
|
|
|
|
2023-09-29 23:46:40 +03:00
|
|
|
{% include post-sharing.html lang=lang %}
|
|
|
|
</div>
|
|
|
|
<!-- .post-tail-bottom -->
|
2023-09-08 17:48:37 +03:00
|
|
|
</div>
|
2023-09-29 23:46:40 +03:00
|
|
|
<!-- div.post-tail-wrapper -->
|
|
|
|
</article>
|