2019-02-05 19:27:02 +01:00
|
|
|
{% macro menu(config, current_path) %}
|
2022-06-24 01:00:23 +02:00
|
|
|
{%- set current_item = false -%}
|
2019-02-05 19:27:02 +01:00
|
|
|
{%- if config.extra.menu_items %}
|
|
|
|
{%- set menu_items = config.extra.menu_items -%}
|
|
|
|
|
|
|
|
{%- for item in menu_items %}
|
2019-02-05 21:32:00 +01:00
|
|
|
{%- set abs_item_url = item.url | replace(from="$BASE_URL", to=config.base_url) -%}
|
|
|
|
{%- set is_current = current_url == abs_item_url ~ "/"
|
|
|
|
or current_url is starting_with(abs_item_url)
|
2019-02-05 19:27:02 +01:00
|
|
|
-%}
|
2019-02-05 21:32:00 +01:00
|
|
|
{%- set is_base = abs_item_url == config.base_url
|
|
|
|
or abs_item_url == config.base_url ~ "/"
|
|
|
|
-%}
|
|
|
|
|
|
|
|
{%- if is_base %}
|
|
|
|
{%- set_global base_item = item -%}
|
|
|
|
{% endif -%}
|
|
|
|
|
|
|
|
{%- if is_current and not is_base %}
|
2019-02-05 19:27:02 +01:00
|
|
|
{%- set_global current_item = item -%}
|
|
|
|
{% endif -%}
|
|
|
|
{% endfor -%}
|
|
|
|
|
2019-02-05 21:32:00 +01:00
|
|
|
{%- if not current_item and base_item %}
|
|
|
|
{# Did not match any menu URLs -- assume it's a blog post #}
|
|
|
|
{%- set current_item = base_item -%}
|
|
|
|
{% endif -%}
|
|
|
|
|
2021-12-08 02:25:02 +01:00
|
|
|
{{ menu_macros::menu_for(config=config, current_item=current_item) }}
|
|
|
|
{% endif -%}
|
|
|
|
{% endmacro menu %}
|
|
|
|
|
|
|
|
{% macro menu_for(config, current_item) %}
|
|
|
|
{%- if config.extra.menu_items %}
|
|
|
|
{%- set menu_items = config.extra.menu_items -%}
|
|
|
|
|
|
|
|
<nav class="menu">
|
|
|
|
<ul class="menu__inner">
|
2019-02-05 19:27:02 +01:00
|
|
|
{%- for item in menu_items %}
|
2019-02-05 21:32:00 +01:00
|
|
|
<li {%- if current_item and current_item == item %} class="active" {%- endif %}>
|
2024-06-09 11:25:34 +02:00
|
|
|
|
|
|
|
<!-- RSS -->
|
|
|
|
{%- set is_rss = item.url == "$BASE_URL/$FEED_FILENAME" -%}
|
2024-06-09 11:25:38 +02:00
|
|
|
|
2024-06-09 11:25:38 +02:00
|
|
|
{%- if config.extra.rss_icon_color %}
|
|
|
|
{%- set rss_icon_color = config.extra.rss_icon_color %}
|
|
|
|
{%- else %}
|
|
|
|
{%- set rss_icon_color = "#ee802f" %}
|
|
|
|
{%- endif %}
|
|
|
|
|
|
|
|
{%- if is_rss -%}
|
2024-08-18 23:51:34 +02:00
|
|
|
{%- if config.generate_feeds %}
|
|
|
|
{%- for feed in config.feed_filenames %}
|
|
|
|
{%- if feed is containing('rss') %}
|
|
|
|
<a rel="alternate" type="application/rss+xml" title="RSS Feed" href="{{ get_url(path=feed, trailing_slash=false, lang=lang) | safe }}" />
|
|
|
|
{% endif -%}
|
|
|
|
{%- if feed is containing('atom') %}
|
|
|
|
<a rel="alternate" type="application/atom+xml" title="ATOM Feed" href="{{ get_url(path=feed, trailing_slash=false, lang=lang) | safe }}" />
|
|
|
|
{% endif -%}
|
|
|
|
{% endfor -%}
|
|
|
|
|
2024-06-09 11:25:38 +02:00
|
|
|
<svg id="rss-icon" xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 32 32" fill="none" stroke="{{rss_icon_color}}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-rss">
|
|
|
|
<g transform="translate(0,5)">
|
|
|
|
<path d="M4 11a9 9 0 0 1 9 9"></path>
|
|
|
|
<path d="M4 4a16 16 0 0 1 16 16"></path>
|
|
|
|
<circle cx="5" cy="19" r="1"></circle>
|
|
|
|
</g>
|
|
|
|
</svg>
|
|
|
|
</a>
|
2024-06-09 11:25:38 +02:00
|
|
|
{% endif -%}
|
|
|
|
|
2024-06-09 11:25:38 +02:00
|
|
|
{%- else -%}
|
|
|
|
{%- if item.newtab -%}
|
|
|
|
<a href="{{ item.url | replace(from="$BASE_URL", to=config.base_url) | safe }}" target="_blank" rel="noopener noreferrer">{{ item.name | safe }}</a>
|
|
|
|
{%- else -%}
|
|
|
|
<a href="{{ item.url | replace(from="$BASE_URL", to=config.base_url) | safe }}">{{ item.name | safe }}</a>
|
|
|
|
{%- endif -%}
|
|
|
|
{%- endif -%}
|
2024-06-09 11:25:34 +02:00
|
|
|
|
2019-02-05 19:27:02 +01:00
|
|
|
</li>
|
|
|
|
{% endfor -%}
|
|
|
|
</ul>
|
|
|
|
</nav>
|
|
|
|
{% endif -%}
|
|
|
|
{% endmacro menu %}
|
|
|
|
|