有没有办法使用 Rest api 在 Magento 2 中获取特定类别的自定义过滤器?
Is there a way to fetch custom filters for a particular category in Magento 2 using Rest api?
我正在使用下面的 url 来获取特定类别的产品,它工作正常。
/rest/default/V1/products?searchCriteria[filterGroups][0][filters][0][field]=category_id&searchCriteria[filterGroups][0][filters][0][value]=262&searchCriteria[filterGroups][0][filters][0][conditionType]=eq&searchCriteria[filterGroups][1][filters][0][field]=visibility&searchCriteria[filterGroups][1][filters][0][value]=4&searchCriteria[filterGroups][1][filters][0][conditionType]=eq&searchCriteria[pageSize]=10&searchCriteria[currentPage]=0
唯一的问题是我想根据所选类别显示过滤器。例如,价格过滤器适用于每个类别,但尺寸和颜色过滤器仅适用于服装类别,而屏幕尺寸适用于电子产品。
知道如何获取每个类别的过滤器吗?
您可以尝试 magento 搜索 api 通过传递类别或任何其他字段来获取过滤器,如下例所示。
{{url}}/rest/V1/search?searchCriteria[requestName]=catalog_view_container&searchCriteria[filterGroups][0][filters][0][field]=category_ids&searchCriteria[filterGroups][0][filters][0][value]=10
结果将包含类别和其他存储桶,如下所示:
[
{
"name": "category_bucket",
"values": [
{
"value": "2",
"metrics": [
2,
634
]
},
{
"value": "10",
"metrics": [
10,
634
]
}
]
},
{
"name": "brand_bucket",
"values": [
{
"value": "617",
"metrics": [
617,
562
]
},
{
"value": "639",
"metrics": [
639,
29
]
},
{
"value": "1218",
"metrics": [
1218,
26
]
},
{
"value": "640",
"metrics": [
640,
8
]
},
{
"value": "1332",
"metrics": [
1332,
4
]
}
]
}
]
您可以将此结果与属性 api 结果映射以获得标签
{{url}}/rest/all/V1/products/attributes?searchCriteria=&fields=items[attribute_id,attribute_code,options,frontend_labels]
我找到了答案,但我不得不从使用 rest api 切换到 graphql,因为 graphql 支持 aggregations。这正是我所需要的,而且与 magento 2 的 rest api 相比,graphql 似乎具有更多功能。
我正在使用下面的 url 来获取特定类别的产品,它工作正常。
/rest/default/V1/products?searchCriteria[filterGroups][0][filters][0][field]=category_id&searchCriteria[filterGroups][0][filters][0][value]=262&searchCriteria[filterGroups][0][filters][0][conditionType]=eq&searchCriteria[filterGroups][1][filters][0][field]=visibility&searchCriteria[filterGroups][1][filters][0][value]=4&searchCriteria[filterGroups][1][filters][0][conditionType]=eq&searchCriteria[pageSize]=10&searchCriteria[currentPage]=0
唯一的问题是我想根据所选类别显示过滤器。例如,价格过滤器适用于每个类别,但尺寸和颜色过滤器仅适用于服装类别,而屏幕尺寸适用于电子产品。
知道如何获取每个类别的过滤器吗?
您可以尝试 magento 搜索 api 通过传递类别或任何其他字段来获取过滤器,如下例所示。
{{url}}/rest/V1/search?searchCriteria[requestName]=catalog_view_container&searchCriteria[filterGroups][0][filters][0][field]=category_ids&searchCriteria[filterGroups][0][filters][0][value]=10
结果将包含类别和其他存储桶,如下所示:
[
{
"name": "category_bucket",
"values": [
{
"value": "2",
"metrics": [
2,
634
]
},
{
"value": "10",
"metrics": [
10,
634
]
}
]
},
{
"name": "brand_bucket",
"values": [
{
"value": "617",
"metrics": [
617,
562
]
},
{
"value": "639",
"metrics": [
639,
29
]
},
{
"value": "1218",
"metrics": [
1218,
26
]
},
{
"value": "640",
"metrics": [
640,
8
]
},
{
"value": "1332",
"metrics": [
1332,
4
]
}
]
}
]
您可以将此结果与属性 api 结果映射以获得标签
{{url}}/rest/all/V1/products/attributes?searchCriteria=&fields=items[attribute_id,attribute_code,options,frontend_labels]
我找到了答案,但我不得不从使用 rest api 切换到 graphql,因为 graphql 支持 aggregations。这正是我所需要的,而且与 magento 2 的 rest api 相比,graphql 似乎具有更多功能。