d
Topic
Dominique Simoneau-Ritchie Shopify Employee
Posts:
41
about 1 month ago

Collection and Collect API Feature Requests

Hi everyone,

At the risk of this thread getting out of hand, I'd love to know what requests you have for features in the area of collections. We're currently making changes to smart collections, and would like consider any ideas you might have as we make these.

If you would rather share your requests privately, you can also use this form.

Dominique

i
Replies
Alex Richter Developer Experience
Posts:
901
about 1 month ago

Stickied for visibility

Posts:
8
about 1 month ago
g
1
upvotes

Hi Dominique,

It would be great to get product collections and product position via the Products API without requests to the Collects API and the Collections API.

It would really speed up data export for our app

 

 

BISTV Member
Posts:
2
Last edited about 1 month ago

Hi, 

There needs to be automatic collection object creation for:

  • Tags
  • Product Types
  • Vendors

The associated collection object would be accessed by {{ collections["vendor.vendor_name"] }}, {{ collections["tag.tag_name"] }}, and {{ collections["type.type_name"] }}

This would allow us to construct a "Related Products" section easily. For example you would do:

{% for tagName in product.tags %}
<h2>Related products: {{ tagName }}</h2>
<ul>
{% assign tagCollection = 'tag.' | append: tagName %}
{% for collectionProduct in collections[tagCollection] %}
<li>{{ collectionProduct.title }}</li>
{% endfor %}
<ul>
{% endfor %}

<h2>Other products from: {{ product.vendor }}</h2>
<ul>
{% assign vendorCollection = 'tag.' | append: product.vendor %}
{% for collectionProduct in collections[vendorCollection] %}
<li>{{ collectionProduct.title }}</li>
{% endfor %}
<ul>

Next, there needs to be a way to get a collection object that's the intersection of two or more collections. For example, if you wanted to get a collection of all Shirts from Aeropostale, you would do:

{% assign vendorCollection = 'vendor.' | append: product.vendor %}
{% assign typeCollection = 'type.' | append: product.type %}
{% assign newCollection = vendorCollection | intersect: typeCollection %}

<h2>All {{product.type}}s from {{ product.vendor }}:</h2>
<ul>
{% for collectionProduct in newCollection %}
<li>{{ collectionProduct.title }}</li>
{% endfor %}
<ul>

Easy. There should also be a way to hyperlink to a collection intersection, eg.: storename.myshopify.com/collections/vendor_Aeropostale&type_shirt&tag_red

Which would give the collection page for all red shirts from Aeropostale.

This would allow for the development of native catalog filtering without an extension.

Dominique Simoneau-Ritchie Shopify Employee
Posts:
41
about 1 month ago
g
1
upvotes

 

It would be great to get product collections and product position via the Products API without requests to the Collects API and the Collections API.

 

Are you aware that you can achieve this via GraphQL? 

query test {
  collection(id:"gid://shopify/Collection/128622083") {
    id
    title
    productsCount
    products(first: 250) {
      edges {
        node {
          id
          title
        }
      }
    }
  }
}

 

Thanks for the suggestion, BISTV! Keep them coming.

BISTV Member
Posts:
2
Last edited about 1 month ago

I would also like to see a "collection heirarchy" liquid object. Just like how linklists currently work, a collection heirarchy would be a customizable tree structure of collections. For example you could make a collection heirarchy with the title "categories" and the structure:

└Apparel
 └Outerwear
  └Shirts
  └Pants
 └Underwear
└Backpacks
 └Traditional
 └Totes
└Shoes

Collection hierarchies would generate relative URLs for your site such as:

sitename.myshopify.com/categories/apparel/outerwear/shirts/

this would effectively be the same collection page as:

sitename.myshopify.com/collections/shirts/

Except the navigation UX is vastly improved.

Posts:
17
Last edited 17 days ago

A sensible request for the Collect and Collections API;

Allow exclusion of a Product from ANY smart collection based on some metafield, regardless of if that product satisfies a smart collection rule. That is, one could create a Product with a metafield attribute such that it would never appear in any smart collection, or possibly, not appear in any collection at all.