Why aren't my custom breadcrumbs showing on all collections in Craft theme?

Hello all,

I have added customized breadcrumbs in my Shopify craft theme but it is only visible for the menu items( like collections present in the menu - see the screenshot)

Menu:

In collection Knitwear:

But It is not working for the collections not present in the menu like the latest collection which is accessible only from the home page (also see the screenshot):

Latest collection section on homepage:

clicked on view all, and landed on the latest collection page but the breadcrumb not visible and this home icon is not clickable either:

Please have a look at the code:

breadcrumbs.liquid

{%- style -%}
    .breadcrumbs {
        padding: 1rem 2rem;
        color: {{ settings.breadcrumb_text_color }};
    }

    .breadcrumbs li {
        display: inline-block;
    }

    .breadcrumbs a {
        text-decoration: none;
        /*Will put liquid customization here*/
        font-size: 15px;
        color: inherit;
    }

    .breadcrumb-delimeter:not(:last-child):after {
        {%- if settings.breadcrumb_delimeter == "angle_right" -%}
            content: "›";
            font-size: 18px;
        {%- elsif settings.breadcrumb_delimeter == "slash" -%}
            content: "/";
            font-size: 16px;
        {%- endif -%}
        display: inline-block;
        margin-left: .75rem;
        margin-right: 0.50rem;
        speak: none;
    }

    .breadcrumbs [aria-current="page"] {
        color: inherit;
        font-weight: normal;
        text-decoration: none;
    }

    
{%- endstyle -%}

<div class="breadcrumbs" aria-label="breadcrumbs">
    {%- unless template == 'index' or template == 'cart' or page.title -%}
    <a href="/" title="Home"><svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="15" height="15" viewBox="0 0 50 50">
    <path d="M 25 1.0507812 C 24.7825 1.0507812 24.565859 1.1197656 24.380859 1.2597656 L 1.3808594 19.210938 C 0.95085938 19.550938 0.8709375 20.179141 1.2109375 20.619141 C 1.5509375 21.049141 2.1791406 21.129062 2.6191406 20.789062 L 4 19.710938 L 4 46 C 4 46.55 4.45 47 5 47 L 19 47 L 19 29 L 31 29 L 31 47 L 45 47 C 45.55 47 46 46.55 46 46 L 46 19.710938 L 47.380859 20.789062 C 47.570859 20.929063 47.78 21 48 21 C 48.3 21 48.589063 20.869141 48.789062 20.619141 C 49.129063 20.179141 49.049141 19.550938 48.619141 19.210938 L 25.619141 1.2597656 C 25.434141 1.1197656 25.2175 1.0507812 25 1.0507812 z M 35 5 L 35 6.0507812 L 41 10.730469 L 41 5 L 35 5 z"></path>
</svg>
      </a>
    {%- case template.name -%}
        {%- when 'article' -%}
        {%- for link in linklists.main-menu.links -%}
            {%- if link.url == blog.url -%}
                <span class = "breadcrumb-delimeter" aria-hidden="true"></span> <!--Breadcrumb Delimeter -->
                {{ link.title | link_to: link.url }}
                {% break %}
            {%- endif -%}
        {%- endfor -%}
            <span class = "breadcrumb-delimeter" aria-hidden="true"></span>
            <a href="{{ article.url }}" aria-current="page">{{ article.title }}</a>
        {%- when "product" -%}
            {%- capture product_url_string -%}
            {%- for collection in product.collections -%}
                {{collection.url }}|
            {%- endfor -%}
            {%- endcapture -%}
    
            {%- assign object_url_string = product_url_string | append: product.url -%}
        
            {%- assign object_urls = object_url_string | split: '|' -%}
            {%- capture linklist_titles_str -%}{%- for linklist in linklists -%}{{ linklist.title | handleize }}|{%- endfor -%}{%- endcapture -%}
            {%- assign str_size = linklist_titles_str | size | minus: 1 -%}
            {%- assign linklist_titles_str = linklist_titles_str | slice: 0, str_size -%}
            {%- assign linklist_titles = linklist_titles_str | split: '|' -%}
        
        
        {%- assign level = 1 -%}
        {%- for link in linklists.main-menu.links -%}
            {%- assign link_handle = link.title | handle -%}
            {%- assign link_titles = link_titles | append: link.title | append: '|' -%}
            {%- assign link_urls = link_urls | append: link.url | append: '|' -%}
            {%- assign link_levels = link_levels | append: level | append: '|'  -%}
            {%- assign link_parents = link_parents | append: 'main-menu' | append: '|'  -%}
            {%- assign link_handles = link_handles | append: link_handle | append: '|' -%}
        
            {%- if linklist_titles contains link_handle -%} 
        
            {%- for clink in linklists[link_handle].links -%}
                {%- if forloop.first == true -%}
                {%- assign level = level | plus: 1 -%}
                {%- endif -%}
                {% assign clink_handle = clink.title | handle %}
                {%- assign link_titles = link_titles | append: clink.title | append: '|' -%}
                {%- assign link_urls = link_urls | append: clink.url | append: '|' -%}
                {%- assign link_levels = link_levels | append: level | append: '|'  -%}
                {%- assign link_parents = link_parents | append: link_handle | append: '|'  -%}
                {%- assign handle = link.title | handleize -%} 
                {%- assign link_handles = link_handles | append: clink_handle | append: '|' -%}
        
                {%- if linklist_titles contains clink_handle -%}
        
                    {%- for gclink in linklists[clink_handle].links -%}
                        {%- if forloop.first == true -%}
                        {%- assign level = level | plus: 1 -%}
                        {%- endif -%}
        
                        {% assign gclink_handle = gclink.title | handle %}
                        {%- assign link_titles = link_titles | append: gclink.title | append: '|' -%}
                        {%- assign link_urls = link_urls | append: gclink.url | append: '|' -%}
                        {%- assign link_levels = link_levels | append: level | append: '|'  -%}
                        {%- assign link_parents = link_parents | append: gclink_handle | append: '|'  -%}
                        {%- assign link_handles = link_handles | append: gclink_handle | append: '|' -%}

                        {%- if forloop.last == true -%}
                        {%- assign level = level | minus: 1 -%}
                        {%- endif -%}
                    {%- endfor -%}
        
                {%- endif -%}
                {%- if forloop.last == true -%}
                {%- assign level = level | minus: 1 -%}
                {%- endif -%}
            {%- endfor -%}
            {%- endif -%}
        {%- endfor -%}
        
        {%- comment -%} CONVERT TO ARRAYS {%- endcomment -%}
        {%- assign str_size = link_levels | size | minus: 1 -%}
        {%- assign llevels = link_levels | slice: 0, str_size | split: '|' -%}
        
        {%- assign str_size = link_titles | size | minus: 1 -%}
        {%- assign ltitles = link_titles | slice: 0, str_size | split: '|' -%}
        
        {%- assign str_size = link_handles | size | minus: 1 -%}
        {%- assign lhandles = link_handles | slice: 0, str_size | split: '|' -%}
        
        {%- assign str_size = link_parents | size | minus: 1 -%}
        {%- assign lparents = link_parents | slice: 0, str_size | split: '|' -%}
        
        {%- assign str_size = link_urls | size | minus: 1 -%}
        {%- assign lurls = link_urls | slice: 0, str_size | split: '|' -%}
        
        {%- assign depth = '3' -%}
        {%- assign bc3_parent_list_handle = '' %}
        
        {%- for url in lurls -%}
            {%- if object_urls contains url and llevels[forloop.index0] == depth -%}
            {%- unless url == product.url or url == collection.url -%}
                {%- capture bc3 -%}{{ ltitles[forloop.index0] | link_to: url, ltitles[forloop.index0] }}{%- endcapture -%}
            {%- endunless -%}
            {%- assign bc3_parent_list_handle = lparents[forloop.index0] -%}
            {%- assign bc3_list_handle = lhandles[forloop.index0] -%}
            {% break %}
            {%- endif -%}
        {%- endfor -%}

        {%- assign depth = '2' -%}
        {%- assign bc2_parent_list_handle = '' %}
        
        {%- if bc3_parent_list_handle == '' -%} 
            {%- for url in lurls -%}
            {%- if llevels[forloop.index0] == depth -%}
                {%- if object_urls contains url -%} 
                {%- unless url == product.url or url == collection.url -%}
                    {%- capture bc2 -%}{{ ltitles[forloop.index0] | link_to: url, ltitles[forloop.index0] }}{%- endcapture -%}
                {% endunless %}
                {%- assign bc2_parent_list_handle = lparents[forloop.index0] -%}
                {%- break -%}
                {%- endif -%}
            {%- endif -%}
            {%- endfor -%} 
        {%- else -%}

            {%- for list_handle in lhandles -%}
            {%- if list_handle == bc3_parent_list_handle -%}
                {% assign bc2_list_handle = list_handle %}
                {%- assign bc2_parent_list_handle = lparents[forloop.index0] -%}
                {%- assign bc2_list_title = ltitles[forloop.index0] -%}
                {%- for bc2_sibling_link in linklists[bc2_parent_list_handle].links -%}
                {%- assign bc2_sibling_title_handleized = bc2_sibling_link.title | handle -%}
                {% if bc2_sibling_title_handleized == bc2_list_handle %}
                    {%- capture bc2 -%}{{ bc2_sibling_link.title | link_to: bc2_sibling_link.url, bc2_sibling_link.title }}{%- endcapture -%}
                    {% break %}
                {%- endif -%}
                {%- endfor -%}
                {% break %}
            {%- endif -%}
            {%- endfor -%}
        {%- endif -%}
        
        {%- assign depth = depth | minus: 1 | append: '' -%}
        {%- assign bc1_parent_list_handle = '' %}
        
        {%- if bc2_parent_list_handle == '' -%} 
            {% for url in lurls %}
            {%- if object_urls contains url and llevels[forloop.index0] == depth -%}
                {%- unless url == product.url or url == collection.url -%}
                {%- capture bc1 -%}{{ ltitles[forloop.index0] | link_to: url, ltitles[forloop.index0] }}{%- endcapture -%}
                {% endunless %}
                {%- assign bc1_parent_list_handle = lparents[forloop.index0] -%}
                {%- break -%}
            {%- endif -%}
            {%- endfor -%}
        
        {%- else -%}
            {%- for list_handle in lhandles -%}
            {%- if bc2_parent_list_handle == list_handle -%}
                {% assign bc1_list_handle = list_handle %}
                {%- assign bc1_parent_list_handle = lparents[forloop.index0] -%}
                {%- assign bc1_title = ltitles[forloop.index0] -%}
                {%- for bc1_sibling_link in linklists[bc1_parent_list_handle].links -%}
                {%- assign bc1_sibling_title_handleized = bc1_sibling_link.title | handle -%}
                {% if bc1_sibling_title_handleized == bc1_list_handle %}
                    {%- capture bc1 -%}{{ bc1_sibling_link.title | link_to: bc1_sibling_link.url, bc1_sibling_link.title }}{%- endcapture -%} 
                    {% break %}
                {%- endif -%}
                {%- endfor -%}
            {%- endif -%}
            {%- endfor -%}
        {%- endif -%}
       
            {%- if bc1 -%}
            <span class = "breadcrumb-delimeter" aria-hidden="true"></span> <!--Breadcrumb Delimeter -->
            {{ bc1 }}
            {%- endif -%}
            {%- if bc2 -%}
            <span class = "breadcrumb-delimeter" aria-hidden="true"></span>
            {{ bc2 }}
            {%- endif -%}
            {%- if bc3 -%}
            <span class = "breadcrumb-delimeter" aria-hidden="true"></span>
            {{ bc3 }}
            {%- endif -%}
        
            <span class = "breadcrumb-delimeter" aria-hidden="true"></span>
            <a href = "{{ product.url }}">{{ product.title }}</a>
        {%- else -%}
            {% for link in linklists.main-menu.links %}
                {% if link.child_active or link.active %}
                <span class = "breadcrumb-delimeter" aria-hidden="true"></span> <!--Breadcrumb delimeter-->
                    <a href="{{ link.url }}">
                    {{ link.title | escape }}  
                    </a>
                    {% for clink in link.links %}
                    {% if clink.child_active or clink.active %}
                    <span class = "breadcrumb-delimeter" aria-hidden="true"></span>
                        <a href="{{ clink.url }}">
                        {{ clink.title | escape }} 
                        </a>
                        {% for gclink in clink.links %}
                        {% if gclink.child_active or gclink.active %}
                            <span class = "breadcrumb-delimeter" aria-hidden="true"></span>
                            <a href="{{ gclink.url }}">
                            {{ gclink.title | escape }} 
                            </a>
                        {% endif %}
                        {%- endfor -%}
                    {% endif %}
                    {%- endfor -%}
                {% endif %}
            {%- endfor -%}
        {%- endcase -%}
    {%- endunless -%}
</div>

<script defer>
    const breadCrumbLinks = document.querySelectorAll(".breadcrumbs a")
    const lastLink = breadCrumbLinks[breadCrumbLinks.length - 1]
    lastLink.href = "javascript&colon;void(0)"
</script>

Please let me know if you require further information related to the code.

Looking forward to some help.

Thanks

Your code uses the URL to create the breadcrumbs. If the url does not include the collection it won’t be displayed in the breadcrumbs.

Example:

https://store.com/collections/kitchen/products/blue-chair

Home > Kitchen > Blue Chair

https://store.com/products/blue-chair

Home > Blue Chair

Hi Ivan, do you know how to add the collection to the url of a product?