newblog/templates/page.html
2024-07-01 13:20:09 +00:00

217 lines
8.2 KiB
HTML

{# This Template Shows the Individual Blog Posts#}
{% extends "base.html" %}
{%- block seo %}
{{- super() }}
{%- set title_addition = "" %}
{%- if page.title and config.title %}
{%- set title = page.title %}
{%- set title_addition = title_separator ~ config.title %}
{%- elif page.title %}
{%- set title = page.title %}
{%- else %}
{%- set title = config.title %}
{%- endif %}
{%- if page.description %}
{%- set description = page.description %}
{%- else %}
{%- set description = config.description %}
{%- endif %}
{%- set created_time = page.date %}
{%- set updated_time = page.updated %}
{%- if current_section %}
{%- set page_section = current_section %}
{%- else %}
{%- set page_section = "" %}
{%- endif %}
{{- macros_seo::seo(config=config, title=title, title_addition=title_addition, description=description, type="article", is_page=true, created_time=created_time, updated_time=updated_time, page_section=page_section) }}
{%- endblock seo %}
{%- block comments_init %}
{%- if config.extra.comments.hyvor %}
<script defer src="https://talk.hyvor.com/embed/embed.js" type="module"></script>
{%- endif %}
{%- endblock comments_init %}
{%- block content %}
<article>
{{- macros::title_post(page=page, config=config) }}
{%- if config.extra.meta_post.position %}
{%- if config.extra.meta_post.position == "top" or config.extra.meta_post.position == "both" %}
{{- macros::meta_post(page=page, config=config) }}
{%- endif %}{%- endif %}
{# In Page Series Navigation #}
{%- if config.extra.series | default(value=true) %}
{%- if page.extra.series %}
{%- set tag = get_taxonomy_term(kind="tags", term=page.extra.series, lang=lang) %}
{%- set page_num = tag.page_count | as_str %}
{%- if lang != config.default_language %}
{%- set parts_string = macros::translate(key='Series_parts', default='Series', i18n=i18n) | replace(from="$NUMBER_OF_PARTS", to=page_num) %}
{% else %}
{%- set parts_string = config.extra.Series_parts | default(value="Series") | replace(from="$NUMBER_OF_PARTS", to=page_num) %}
{% endif -%}
<div class="block">
<div class="blockdiv">
<a class="b s150" href="{{ tag.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ tag.name }} ({{ parts_string }})</a>
<ol>
{%- for inner in tag.pages | sort(attribute="date") %}
{%- if inner.content == page.content %}
<li><a class="scur" href="{{ inner.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ inner.title }}</a></li>
{%- set_global current_section_index = loop.index0 %} {# Finds the current section, needed for pagination logic later #}
{% else %}
<li><a href="{{ inner.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ inner.title }}</a></li>
{%- endif %}
{%- endfor %}
</ol>
</div>
</div>
{%- endif %}
{%- endif %}
{{ page.content | safe }}
{%- if config.extra.meta_post.position %}
{%- if config.extra.meta_post.position == "bottom" or config.extra.meta_post.position == "both" %}
{{- macros::meta_post(page=page, config=config) }}
{%- endif %}{%- endif %}
{%- block page_footer %}
{{- macros::footer(page=page, config=config) }}
{%- endblock page_footer %}
{%- block comments_body %}
{%- if config.extra.comments.hyvor %}
<hyvor-talk-comments website-id={{ config.extra.comments.hyvor }} page-id={{ page.slug }}{%- if config.extra.comments.hyvorcolor %} colors="{{ config.extra.comments.hyvorcolor }}"{%- endif %}></hyvor-talk-comments>
{%- endif %}
{%- endblock comments_body %}
</article>
{%- block toc %}
{%- if config.extra.toc | default(value=true) %}
{%- if page.extra.toc %}
{%- set toc = page.toc %}
{%- endif %}
{%- if toc or page.extra.series %}
<div class="sblock">
{%- if page.extra.series %}
{%- set num_extra_pages = config.extra.series_items | default(value=9) %}
<div class="blockdiv">
<a class="b s150" href="{{ tag.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ parts_string }}</a>
<ol>
{%- if tag.page_count > num_extra_pages and num_extra_pages > 0 %}
{%- set sorted_array = tag.pages | sort(attribute="date") %}
{%- set num_pages = tag.page_count %}
{# Shows the first page #}
{{ macros::series_link(inner=sorted_array.0, page=page, config=config) }}
{# Hides the next couple of pages if the current section is more than 3 away from start #}
{%- if current_section_index > 3 %}
<details>
<summary>More...</summary>
</details>
<div class="hidden_li">
{%- for inner in sorted_array | slice(start=1, end=(current_section_index - 2)) %}
<li><a href="{{ inner.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ inner.title }}</a></li>
{%- endfor %}
</div>
{%- endif %}
{# Max(current_section_index - 2, 1) #}
{%- if (current_section_index - 2 ) > 1 %}
{%- set num = current_section_index - 2 %}
{%- else %}
{%- set num = 1 %}
{%- endif %}
{# Shows two pages before current page #}
{%- for inner in sorted_array | slice(start=num, end=current_section_index) %}
<li><a href="{{ inner.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ inner.title }}</a></li>
{%- endfor %}
{# Shows the current page #}
{%- if current_section_index != 0 and current_section_index != (num_pages - 1) %}
{{ macros::series_link(inner=sorted_array[current_section_index], page=page, config=config) }}
{%- endif %}
{# Min(num_pages - 1, current_section_index + 3) #}
{%- if (num_pages - 2 ) < (current_section_index + 3) %}
{%- set num = num_pages - 1 %}
{%- else %}
{%- set num = current_section_index + 3 %}
{%- endif %}
{%- for inner in sorted_array | slice(start=(current_section_index + 1), end=num ) %}
<li><a href="{{ inner.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ inner.title }}</a></li>
{%- endfor %}
{%- if current_section_index < num_pages - 4 %}
<details>
<summary>More...</summary>
</details>
<div class="hidden_li">
{%- for inner in sorted_array | slice(start=(current_section_index + 3), end=(num_pages - 1)) %}
<li><a href="{{ inner.permalink | safe }}{%- if uglyurls %}index.html{%- endif %}">{{ inner.title }}</a></li>
{%- endfor %}
</div>
{%- endif %}
{%- set last = num_pages - 1%}
{{ macros::series_link(inner=sorted_array[last], page=page, config=config) }}
{# If there is not more than max pages render normally #}
{%- else %}
{%- for inner in tag.pages | sort(attribute="date") %}
{{ macros::series_link(inner=inner, page=page, config=config) }}
{%- endfor %}
{%- endif %}
</ol>
</div>
{%- endif %}
{%- if toc %}
<div class="blockdiv sticky">
<a class="b s150" href="#">{{ macros::translate(key="Index", default="Index", i18n=i18n) }}</a>
{%- for h in toc %}
<div>
<a href="#{{h.id | safe}}">{{ h.title }}</a>
</div>
{%- if h.children %}
{%- for h2 in h.children %}
<div class="hpad">
<a href="#{{h2.id | safe}}"><small>- {{ h2.title }}</small></a>
</div>
{%- endfor %}
{%- endif %}
{%- endfor %}
</div>
</div>
{%- endif %}
{%- endif %}
{%- endif %}
{%- endblock toc %}
{%- endblock content %}
{%- block gotop %}
{%- if page.reading_time %}
{%- if page.reading_time > 2 %}
{%- set icon_top=config.extra.icon_top | default(value="svgs svgh angu") -%}
<span class="topout">
<span class="topleft"> </span><a href="#" class="top" title="Back to Top">{%- if icon_top %}<i class="{{ icon_top }}"></i>{%- else %}&cuwed;{%- endif %}</a>
</span>
{%- endif %}
{%- endif %}
{%- endblock gotop %}