menu.html (2332B)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
{% macro menu(config, current_url) %} {%- if config.extra.main_menu_items and config.extra.main_menu_items | length > 0 %} {%- set menu_items = config.extra.main_menu_items -%} {%- set main_len = menu_items | length -%} {%- if config.extra.main_menu_show -%} {%- set show_len = config.extra.main_menu_show -%} {%- set menu_more = config.extra.main_menu_more -%} {%- else -%} {%- set show_len = main_len -%} {%- set menu_more = "" -%} {%- endif -%} <nav class="menu-desktop" aria-label="Main navigation"> <ul class="menu-inner menu-inner-desktop"> {{ menu::items(menu=menu_items | slice(end=show_len), current_url=current_url)}} {%- if main_len > show_len -%} <li class="menu-inner-list"> <button type="button" class="menu-inner-list-more-trigger" aria-controls="more-menu" aria-expanded="false"> {{ menu_more }} ▾ </button> <ul class="menu-inner-list-more" id="more-menu"> {{ menu::items(menu=menu_items | slice(start=show_len), current_url=current_url) }} </ul> </li> {%- endif -%} </ul> </nav> <nav class="menu-mobile hidden" id="mobile-menu" aria-label="Main navigation"> <ul class="menu-inner menu-inner-mobile"> {{ menu::items(menu=menu_items, current_url=current_url) }} </ul> </nav> {% endif -%} {% endmacro menu %} {% macro items(menu, current_url) %} {%- for item in menu %} {% if item.external %} {% continue %} {% endif -%} {%- set abs_item_url = get_url(path=item.url) -%} {%- set is_current = current_url == abs_item_url ~ "/" or current_url == abs_item_url -%} {%- 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 %} {%- set_global current_item = item -%} {% endif -%} {% endfor -%} {%- if not current_item and base_item %} {%- set current_item = base_item -%} {% endif -%} {%- for item in menu -%} <li {%- if current_item and current_item == item %} class="active" {%- endif %}> {%- if item.external -%} {{ url::external(url=item.url, text=item.name) }} {%- else -%} {%- if item.newtab -%} {%- set newtab = true -%} {%- else -%} {%- set newtab = false -%} {%- endif -%} {{ url::internal(path=item.url, text=item.name, newtab=newtab) }} {%- endif -%} </li> {%- endfor -%} {% endmacro items %}