Sort Shopify Liquid Collection By A Nested Property

Suppose you want to sort or filter a Shopify collection by a sub/nested property. Well, this is an example of how you’d sort a Shopify collection by a nested property, specifically how to sort by a setting property of a logo list block.

Shopify tab example
Shopify filter tab example

I created a Shopify tab snippet to filter and sort the above list of logo blocks by a property within a single logo/block. The code below gets all the blocks in the logo list section, maps over the settings and returns the items where the logo_list property equals “brewery” then sorts the results by title. If you don’t need to return a specific sub-set of data and only want to sort by the property then simply remove | where: “logo_category”, “brewery” from the assign block.

{% assign breweries = section.blocks | map: 'settings' | where: "logo_category", "brewery" | sort: "title" %}{% for block in breweries %}    {%- assign logo = block.logo -%}    {%- assign url = block.url -%}        <div class="module-inline-item dynamic-logo-list-item" {{ block.shopify_attributes }}>            {% if url != blank %}              <a href="{{ url }}" target="_blank">            {% endif %}            {% if block.logo != blank %}              {%                include 'rimg',                img: logo,                size: '330x280',                lazy: true              %}            {% else %}              {{ 'logo' | placeholder_svg_tag: 'placeholder-svg' }}            {% endif %}            {% if url != blank %}                </a>            {% endif %}          </div>      {% endfor %}

And that’s all you need to do to filter a Shopify collection by a nested property. I will post the code for the full tab snippet in another post.