{% extends 'public/base.html' %} {% block title %}{{ '#' if not is_category|default(false) else '' }}{{ tag_name }} - {{ site_name }}{% endblock %} {% block meta_description %}{{ tag_name }} — {{ site_name }}{% endblock %} {% block schema %} {% endblock %} {% block hreflang %} {#- Hub-style hreflang: every active language is an equal version of this listing. Default language lives on the clean URL, others carry ?lang=. Emitted on page 1 only — page counts differ per language, so cross- linking /tag/X?page=3 to /tag/X?lang=de&page=3 could point at a 404. No x-default: the engine treats all languages as equals (same policy as the sitemap). -#} {%- if not request.args.get('page') %} {%- for version in all_versions %} {%- if version.language == (default_language or 'en') %} {%- else %} {%- endif %} {%- endfor %} {%- endif %} {% endblock %} {% block content %} {% set _is_cat = is_category|default(false) %} {# The category route is /category/; passing tag_name instead leaves the rule variable unfilled and url_for() raises BuildError -> 500. Pick the endpoint and its keyword name here, once. #} {% set _page_endpoint = 'view_category' if _is_cat else 'view_tag' %} {% set _page_key = {'category_name': category_name} if _is_cat else {'tag_name': tag_name} %} {# ФИКС 3 (отделяемый) — сохранить язык на 2-й и далее страницах. #} {% set _page_lang = request.args.get('lang') %}

{{ pt('in_category') if _is_cat else pt('tagged_with') }}

{{ tag_name }}

{% if posts.items or tagged_pages %}
{% for post in posts.items %}

{{ post.title }}

{% if post.category %} · {{ post.category }} {% endif %}
{% if post.excerpt %}

{{ post.excerpt }}

{% endif %}
{% endfor %} {% for page in tagged_pages %}

{{ page.title }}

{% if page.excerpt %}

{{ page.excerpt }}

{% endif %}
{% endfor %}
{% if posts.pages > 1 %} {% endif %} {% else %}

{{ pt('no_content') }}

{% endif %} {% endblock %}