45 lines
1.4 KiB
HTML
45 lines
1.4 KiB
HTML
{######################################
|
|
menu widget
|
|
|
|
Provide the widget with a content page
|
|
that contains your menu:
|
|
|
|
{{ widgets::menu(content="_common/menus/main.md") }}
|
|
|
|
Separate entries with a thematic break:
|
|
either ---, ~~~, ___ or <hr />
|
|
|
|
An entry can be either text, a link, or
|
|
a submenu. A submenu is an actual list
|
|
defined using Markdown or HTML.
|
|
|
|
You cannot use <p> tags in the menu.
|
|
######################################}
|
|
{% macro menu(content) %}
|
|
<nav class="nav-menu" role="navigation">
|
|
{%- set source = self::i18n_content(path=content) -%}
|
|
{% set entries = source | split(pat="<hr />") %}
|
|
{#- fetch page content and divide it with separator -#}
|
|
{%- for entry in entries %}
|
|
{{ entry | trim | replace(from="<p>", to="") | replace(from="</p>", to="") | safe }}
|
|
{# strip paragraph tags away for nicer markup #}
|
|
{%- endfor %}
|
|
</nav>
|
|
{% endmacro menu %}
|
|
|
|
{%- macro i18n_path(path) -%}
|
|
{% if lang == "en" %}{{ path }}
|
|
{%- else -%}
|
|
{%- set parts = path | split(pat=".md") -%}
|
|
{%- for part in parts -%}
|
|
{%- if part and not loop.first -%}.md{%- endif -%}
|
|
{%- if not loop.last -%}{{ part }}{%- endif -%}
|
|
{%- endfor -%}
|
|
.{{ lang }}.md
|
|
{%- endif -%}
|
|
{%- endmacro i18n_path -%}
|
|
|
|
{%- macro i18n_content(path) -%}
|
|
{{ get_page(path=self::i18n_path(path=path)) | get(key="content") }}
|
|
{%- endmacro i18n_content -%}
|