{# The title block is rendered ONCE into page_title (a set-block capture, verified to honour child overrides and super() on this Jinja version), so and og:title always agree without re-rendering the block. The description cascades from the page (meta_description, with the older page_description spelling kept working) to the product's tagline, and is omitted entirely when neither provides one. #} {% set page_title %}{% block title %}{{ site.name }}{% endblock %}{% endset %} {% set meta_desc = meta_description | default(page_description, true) | default(site.tagline, true) %} <title>{{ page_title | trim }} {% if meta_desc %}{% endif %} {% if meta_desc %}{% endif %} {% if site.locale %}{% endif %} {# og:image only when the product actually ships static/og.png; the theme never fabricates one. Crawlers need an absolute URL. #} {% if site.og_image %} {% else %} {% endif %} {% if theme_tokens and theme_tokens.font_url %} {% endif %} {# Feature stylesheets, declared via register_asset(); emitted in a deterministic, deduplicated order (theme base ~0, features ~100, skins ~200). #} {% for href in get_assets('css') %} {% endfor %} {% block head %}{% endblock %} {% for hook in get_template_hooks("layout.head") %}{{ hook() | safe }}{% endfor %} {% for hook in get_template_hooks("layout.body_start") %}{{ hook() | safe }}{% endfor %} {# Any page can hand the shell a trail of {label, url} entries as `breadcrumb`; that explicit trail always wins. Every other page gets a trail derived from the URL and its title, governed by the site_breadcrumbs appearance setting (deep / all / off) — and no markup at all when the mode hides it. See blocks/breadcrumb.html and the module docstrings of hooks.py and breadcrumbs.py. #} {%- if breadcrumb %}{{ render_block('breadcrumb', breadcrumb=breadcrumb) }} {%- else %} {%- set auto_trail = auto_breadcrumb(page_title | trim, setting('site_breadcrumbs', config.get('SITE_BREADCRUMBS', 'deep'))) %} {%- if auto_trail %}{{ render_block('breadcrumb', breadcrumb=auto_trail) }}{% endif %} {%- endif %} {% for hook in get_template_hooks("layout.hero") %}{{ hook() | safe }}{% endfor %} {% block hero %}{% endblock %}
{% block content %}{% endblock %}
{# Feature scripts, declared via register_asset(); deferred, deduped, ordered. #} {% for href in get_assets('js') %} {% endfor %} {% for hook in get_template_hooks("layout.scripts") %}{{ hook() | safe }}{% endfor %} {% block scripts %}{% endblock %}