/collections/all, vendor and product type pages

Pages every Shopify store has without creating them: /collections/all, /collections, and the vendor and product type pages at /collections/vendors?q=.

All products
/collections/all
By vendor
/collections/vendors?q=<vendor>
By type
/collections/types?q=<type>
Plan
Every plan
Last checked

In short

Every Shopify store has a few collection pages you never create: /collections/all lists every product on the online store, /collections lists all collections, /collections/vendors?q=<vendor> lists one brand and /collections/types?q=<type> one product type. The q value is case-insensitive. They use the collection template, so sorting and storefront filters work on them, and the link_to_vendor and link_to_type filters build the links for you.

How to use it

  1. Link a brand name on the product page with {{ product.vendor | link_to_vendor }}.
  2. Link the product type with {{ product.type | link_to_type }}.
  3. On those pages, read collection.current_vendor or collection.current_type for the heading.
  4. Add sort_by or filter parameters to any of these URLs, just like a normal collection.

Code

vendor-and-type-links.liquid
{%- comment -%}
  Links from a product page to "more from this brand" and "more of this type".
  link_to_vendor and link_to_type build the encoded /collections/vendors
  and /collections/types URLs, so names with spaces or apostrophes work.
{%- endcomment -%}
<p>
  More from {{ product.vendor | link_to_vendor }}
  {%- if product.type != blank %} · More {{ product.type | link_to_type }}{% endif %}
</p>

{%- comment -%} On the vendor or type page itself, show what was asked for. {%- endcomment -%}
{%- if collection.current_vendor -%}
  <h1>{{ collection.current_vendor }}</h1>
{%- elsif collection.current_type -%}
  <h1>{{ collection.current_type }}</h1>
{%- endif -%}
urls.txt
# Every product published to the online store
https://your-store.com/collections/all

# All collections (list-collections template)
https://your-store.com/collections

# Products by vendor (case-insensitive, URL-encode spaces and apostrophes)
https://your-store.com/collections/vendors?q=Acme%20Outdoor

# Products by product type
https://your-store.com/collections/types?q=Rain%20Jackets

# These are collection pages, so sorting and storefront filters work too
https://your-store.com/collections/vendors?q=Acme%20Outdoor&sort_by=price-ascending

Written by Lintel. MIT license: free to use in your own store and in client work.

Limits and edge cases

  • Vendor and type pages are only as clean as your data: “Acme” and “Acme Inc.” are two vendors.
  • Encode spaces and apostrophes in the q value (%20, %27); the Liquid filters do this for you.
  • The q value is case-insensitive: q=shirts and q=SHIRTS show the same page.
  • Vendor and type pages have no description of their own; for brands that matter for SEO, a real collection with its own text is the better landing page.

Questions

Does every Shopify store have /collections/all?
Yes. It lists all products published to the online store, even if you never created an “All” collection.
How do I show all products from one brand on Shopify?
Link to /collections/vendors?q=<brand name>, or use {{ product.vendor | link_to_vendor }} in the theme.
Can I filter /collections/all?
Yes. Storefront filter and sort_by parameters work on it like on any collection.
  • Checked on a Shopify store on the date shown. Shopify changes its admin often; if a step looks different, the idea usually still works.
  • Examples use placeholder IDs and your-store.myshopify.com. Replace them with your own.
  • MIT license for the code snippets.

Need this built, tested and maintained for your store? See Shopify development.

Have something to build? Let’s talk it through.

Taking a limited number of projects at a time. Every brief is read by an engineer, not a salesperson.

Gencer KarakayaShopify Engineer

An engineer reads your brief, and we reply by email.