Shopify Storefront GraphQL фильтрация товаров в коллекции

Согласно этой документации:https://shopify.dev/custom-storefronts/products/filter-products#query-products-by-type

Мы должны иметь возможность фильтровать продукты в коллекции, используя collectionByHandle.

Я создал очень простой тестовый запрос в обозревателе приложений Shopify GraphiQL. Когда я запускаю задокументированный запрос, он возвращает все продукты без фильтрации. Увидеть ниже:

Это похоже на ошибку с API, верно? Или я упускаю что-то основное?

3 ответа

Хорошо, это оказалось проблемой конфигурации. Чтобы разрешить фильтрацию по типу товара, ее нужно включить в админке вашего магазина. Если вы перейдете к: Интернет-магазин > Навигация

... и прокрутите вниз, вы увидите, где можно добавить разрешенные фильтры:

Даже если в нем указано, что ваша тема не поддерживает фильтры, это все равно изменит поведение API.

Это можно сделать сейчас. Этот пост на форуме Shopify прекрасно объясняет это с помощью новейшего API.

В случае, если этот пост будет удален, я собираюсь разместить информацию ниже:

Теперь мы можем фильтровать по метаполям, но через коллекцию. https://shopify.dev/custom-storefronts/products-collections/filter-products#query-products-by-metafi.. .

Требования:

  • Метаполе должно быть добавлено как фильтр в приложении «Поиск и обнаружение» или фильтры в настройках навигации.
  • Метаполе должно быть одного из следующих типов: single_line_text_field, boolean, numeric_integer, numeric_decimal.
  • Используемый API Storefront должен быть версии 2022-04 или выше. Я тестировал его с 2022-10
  • Метаполе должно быть доступно API Storefront.

Зная, что на сегодняшний день у нас есть ограничение в 5000 товаров для работы фильтров в обычном магазине (см. https://help.shopify.com/en/manual/online-store/search-and-discovery/filters)

Я решил проверить, распространяется ли это ограничение на Storefront API, я протестировал его с коллекцией из 11769 товаров и смог получить отфильтрованные результаты, как и ожидалось. Таким образом, кажется, что на данном этапе у нас нет этого ограничения в Storefront API.

У меня та же проблема, параметр фильтра запроса продуктов кажется неэффективным и возвращает мне все продукты в коллекции. Я не могу найти опцию «разрешенные фильтры». В настоящее время я использую Storefront API в качестве внешнего приложения, все работает нормально, за исключением этого.

Вот код.

       query (
      $collectionHandle: String, $product_filters: [ProductFilter!], $nQueryElements: Int
    ) {
      collection(handle: $collectionHandle) {
        title
        products(first: $nQueryElements filters: $product_filters) {
          pageInfo {
            hasNextPage
            hasPreviousPage
          }
          edges {
            cursor
            node {
              title
              vendor
              availableForSale
              id
              handle
              productType
              variants(first: 40) {
                edges {
                  node {
                    selectedOptions {
                       name
                      value
                        }
                    title
                    compareAtPriceV2 {
                      amount
                    }
                    image {
                      id
                    }
                  }
                }
              }
              priceRange {
                maxVariantPrice {
                  amount
                }
              }
              images(first: 1) {
                edges {
                  node {
                    id
                    url(transform:  { maxWidth: 500, maxHeight: 700 })
                  }
                }
              }
            }
          }
        }
      }
    }

константные переменные = { collectionHandle: this.pageURL, nQueryElements: this.nQueryElements, lastCursor: this.queryCursor.last, firstCursor: this.queryCursor.first, product__filters: [{ productVendor: "ASPESI", },], };

Спасибо кто может помочь.

Другие вопросы по тегам