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", },], };
Спасибо кто может помочь.