filter
A filter describes one trusted storefront facet returned by
collection.filters or search.filters. It supplies the buyer-facing label,
canonical query parameter, values, counts, and add/remove URLs. Themes should
render these fields instead of constructing metafield or variant parameters
from untrusted input.
Examples
Render a list or boolean filter
{% for filter in collection.filters %} {% if filter.type == 'list' or filter.type == 'boolean' %} <fieldset> <legend>{{ filter.label | escape }}</legend> {% for value in filter.values %} <label> <input type="checkbox" name="{{ value.param_name }}" value="{{ value.value | escape }}" {% if value.active %}checked{% endif %} {% if value.count == 0 and value.active == false %}disabled{% endif %} > {{ value.label | escape }} ({{ value.count }}) </label> {% endfor %} </fieldset> {% endif %}{% endfor %}filter.operator is AND or OR for compatible list and boolean facets.
Different filter sources always combine with AND.
Render a price or numeric range
Range filters expose min_value and max_value rather than entries in
values. Price values are decimal major-currency amounts.
{% for filter in collection.filters %} {% if filter.type == 'price_range' or filter.type == 'range' %} {% if filter.min_value %} <label> Minimum <input type="number" name="{{ filter.min_value.param_name }}" value="{{ filter.min_value.value | escape }}" min="0" > </label> {% endif %} {% if filter.max_value %} <label> Maximum <input type="number" name="{{ filter.max_value.param_name }}" value="{{ filter.max_value.value | escape }}" min="0" {% if filter.range_max != blank %}max="{{ filter.range_max }}"{% endif %} > </label> {% endif %} {% endif %}{% endfor %}For a price facet, the parameter names are filter.v.price.gte and
filter.v.price.lte. A value of 50 means 50 units of the active storefront
currency, including currencies whose minor-unit exponent is not two.
Clear the complete facet
{% if filter.active_values != empty and filter.url_to_remove %} <a href="{{ filter.url_to_remove }}">Clear {{ filter.label | escape }}</a>{% endif %}Generated filter URLs retain the active locale and safe query state and reset the affected paginator. See Storefront filtering for the complete URL grammar, limits, tags, and relevant-variant behavior.
Properties
| Property | Description |
|---|---|
filter.active_values | Currently selected list/boolean values or active range-bound entries. |
filter.collapsed_by_default | Seller-configured initial collapsed state for the filter UI. |
filter.display_type | Sellerlane UI hint such as checkbox, dropdown, radio, box, or range. |
filter.false_value | False option for a boolean filter, otherwise nil. |
filter.inactive_values | Currently unselected values for a boolean or list filter. |
filter.label | Display label. |
filter.max_value | Current maximum-bound value for a range filter, otherwise nil. |
filter.min_value | Current minimum-bound value for a range filter, otherwise nil. |
filter.operator | AND or OR for compatible list/boolean filters; nil for ranges. |
filter.param_name | Canonical public URL parameter, for example filter.v.option.Color. |
filter.presentation | text, swatch, or image for list values; nil for other filter types. |
filter.range_max | Largest available range value in storefront major currency units for price filters. |
filter.show_all_values | Seller-configured hint for expanding the complete value list. |
filter.sort_mode | Seller-configured value ordering mode, or nil. |
filter.sort_order | Seller-configured filter position, or nil. |
filter.tooltip | Optional seller-authored help text. |
filter.true_value | True option for a boolean filter, otherwise nil. |
filter.type | Filter shape: list, boolean, price_range, or range. |
filter.url_to_remove | Localized current-view URL with this entire filter removed. |
filter.values | All selectable values for a list/boolean filter; empty for a range filter. |
Property list is generated from the storefront engine (FilterDrop), so it always matches what your theme can use. Use {{ filter | json }} only as a curated debug snapshot; it can omit lazy or otherwise public properties.