mirror of
				https://github.com/pawroman/zola-theme-terminimal.git
				synced 2025-10-31 16:10:24 +01:00 
			
		
		
		
	 b04b1f5951
			
		
	
	
		b04b1f5951
		
			
		
	
	
	
	
		
			
			* Noting that (as of 0.14) zola does not pass much of a context when rendering the 404 page, so things like current URL/path aren't available * To work around this the `menu` macro has been split into `menu_for` which accepts a parameter for which item is active. * The previous macro continues to work as is, forwarding the results of figuring out which item is active to the new `menu_for` macro * The added 404 page will then use the `menu_for` macro and pass in a blank item
		
			
				
	
	
		
			51 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| {% macro menu(config, current_path) %}
 | |
|     {%- if config.extra.menu_items %}
 | |
|         {%- set menu_items = config.extra.menu_items -%}
 | |
| 
 | |
|             {%- for item in menu_items %}
 | |
|                 {%- 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)
 | |
|                 -%}
 | |
|                 {%- 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 %}
 | |
|                 {# Did not match any menu URLs -- assume it's a blog post #}
 | |
|                 {%- set current_item = base_item -%}
 | |
|             {% endif -%}
 | |
| 
 | |
|             {{ 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">
 | |
|             {%- for item in menu_items %}
 | |
|                 <li {%- if current_item and current_item == item %} class="active" {%- endif %}>
 | |
|                     {%- 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 -%}
 | |
|                 </li>
 | |
|             {% endfor -%}
 | |
|             </ul>
 | |
|         </nav>
 | |
|     {% endif -%}
 | |
| {% endmacro menu %}
 | |
| 
 |