Leere Kategorien in der Navigation/Menuführung automatisch ausblenden

Moin in die Runde.

Ich habe diesen Beitrag im englischen Bereich gefunden:

https://community.shopify.com/c/technical-q-a/simple-theme-hide-empty-collections/m-p/633997

Es geht darum, Menüpunkte der Navigation automatisch im Frontend auszublenden wenn diese auf leere Kategorien verweisen.

Fallbeispiel:

Hauptmenü:

Home

Über uns

Autos kaufen

Mercedes
Audi
VW
Joghurtbecher (Leer*)
BMW

*Man stelle sich nun vor man habe 400 Automarken. Um nun nicht jedes Mal manuell in der Navigation den Eintrag zur leeren Kategorie zu löschen um dann diese dann später wieder neu anzulegen, wenn der Bestand >=0 ist, soll folgende Codeabfrage eingebaut werden:

{% if collection.products_count != 0 %}
...
{% endif%}

Dieser Code muss irgendwie in die Liquid Datei welche für die Navigation verantwortlich ist

Würde sich eventuell jemand finden der mir damit bei meinem alten Porto Theme helfen würde?

@PB79 ich denke, diese Kondition wird nicht bei der Navigation funktionieren, da die Navigation in Shopify eine Link_list ist. Das heißt es werden nur URL aufgelistet (in der header.liquid), die du in den Einstellungen eingegeben hast und direkte Informationen über die Kategorien selbst. Daher wird die Abfrage „Anzahl Produkte“ gar nicht erst prüfen können, wie viele Artikel in einer Kategorie sind.

Eventuell muss man hier den link.type verwenden, um zu prüfen, ob es sich um eine Kategorieseite handelt und dann von mithilfe der link.option abfragen, ob die Anzahl der Produkte in der Kategorie nicht 0 (null) ist.

Das sollte dann folgendermaßen aussehen:

{% unless link.type == 'collection_link' and link.object.products_count == 0 %}
....
{% endunless %}
1 Like

Hallo @Finer

Vielen Dank für deine Nachricht.

Ich habe zwei Tage fruchtlos in meiner Einfältigkeit 'herumprobiert.

Für mein Porto Theme sehen die Liquid Dateien folgendermassen aus:

Es kann gut sein das nicht alles was benötigt wird in diesen zwei Dateien steht! Aber ich wollte den Beitrag hier nicht zum explodieren bringen :wink: Bei Bedarf lade ich den Rest noch hoch.

header.liquid

Show More

{% case settings.logo_width %}

Show More

{% when ‘’ %}

Show More

{%- assign image_logo_width = ‘111’ -%}

Show More

{%- assign image_logo_height = ‘’ -%}

Show More

{% else %}

Show More

{%- assign image_logo_width = settings.logo_width -%}

Show More

{%- assign image_logo_height = ‘’ -%}

Show More

{% endcase %}

Show More

{% capture logo_size %}{{ image_logo_width }}x{{ image_logo_height }}{% endcapture %}

Show More

{% case settings.logo_sticky_width %}

Show More

{% when ‘’ %}

Show More

{%- assign image_logo_sticky_width = ‘71’ -%}

Show More

{%- assign image_logo_sticky_height = ‘’ -%}

Show More

{% else %}

Show More

{%- assign image_logo_sticky_width = settings.logo_sticky_width -%}

Show More

{%- assign image_logo_sticky_height = ‘’ -%}

Show More

{% endcase %}

Show More

{% capture logo_sticky_size %}{{ image_logo_sticky_width }}x{{ image_logo_sticky_height }}{% endcapture %}

Show More

{% if settings.header_show_notice != blank %}

Show More

{% section ‘header-notice’ %}

Show More

{% endif %}

[details=Show More]

Show More
Show More

{%- assign name_header = ‘header_’ | append:settings.header_design -%}

Show More

{%- include name_header -%}

Show More
Show More

{% if settings.header_sticky_enable == ‘enable’%}

[details=Show More]

Show More

$(document).ready(function() {

Show More

var scrolled = false;

Show More

$(window).scroll(function() {

Show More

if(150 < $(window).scrollTop() && !scrolled){

Show More

var $headerContainer = $(‘.header-container’);

Show More

if($(‘.main-section-header’).height() != 0 ) {

Show More

$(‘.main-section-header’).height($headerContainer.height());

Show More

}

Show More

$headerContainer.addClass(‘sticky-header’);

Show More

$(‘.header-container .main-nav’).addClass(‘container’);

Show More

scrolled = true;

Show More

}

Show More

if(150>$(window).scrollTop() && scrolled){

Show More

$(‘.main-section-header’).height(‘auto’);

Show More

$(‘.header-container’).removeClass(‘sticky-header’);

Show More

$(‘.header-container .main-nav’).removeClass(‘container’);

Show More

scrolled = false;

Show More

}

Show More

})

Show More

});

Show More
Show More

{% endif %}

Show More
Show More
Show More
Show More

{% include ‘mobile-menu’ %}

Show More

{% if settings.header_design == ‘type3’ %}

Show More

{% include ‘mobile-menu’, include_second_menu: true %}

Show More

{% endif %}

Show More
Show More
Show More

{{ settings.header_mobile_custom_text | split: ‘[lang2]’ | first }}

Show More

{% if settings.language_enable %}

Show More

{{ settings.header_mobile_custom_text | split: ‘[lang2]’ | last }}

Show More

{% endif %}

Show More
Show More
Show More
Show More

header_type2.liquid

Show More

{% include ‘header-top-bar’ %}

Show More
Show More

{% include ‘header-logo’ %}

Show More
Show More

{% if settings.header_custom_text != ‘’ %}

Show More
Show More

{% if settings.language_enable %}

Show More

{{ settings.header_custom_text | split: ‘[lang2]’ | first }}

Show More

{{ settings.header_custom_text | split: ‘[lang2]’ | last }}

Show More

{% else %}

Show More

{{ settings.header_custom_text | split: ‘[lang2]’ | first }}

Show More

{% endif %}

Show More
Show More

{% endif %}

Show More
Show More

{% include ‘header-cart’ %}

Show More
Show More
Show More
Show More
Show More

{% include ‘header-search’ %}

Show More
Show More
Show More
Show More
Show More
Show More
Show More
Show More

{% include ‘header-logo-sticky’ %}

Show More
Show More

{% include ‘main-menu’ %}

Show More
Show More
Show More

{% include ‘header-cart’ %}

Show More
Show More
Show More
Show More
Show More

Könntest du mir eventuell einen Tip geben wo ich deinen Code hier einfügen müsste?

Ich habe die Dateien auch als .txt angehängt.

Vielen Dank für deine Zeit.

Gruss

Phil

Hey @byteriver :slightly_smiling_face:

Könntet du mir eventuell einen Tip geben, wo ich den Code von @Finer einfügen müsste? Habe die letzten Tage vergebens versucht das Problem alleine zu lösen. Würde mich über Hilfe sehr freuen.

Gruss

Phil

Würde sich eventuell doch noch jemand finden der mir bei meinem Problem helfen könnte?