Magento 2 How to get Layered Navigation Data in GraphQL

This topic is very important for Layered Navigation in magento 2 using GraphQL. First of all we need to products query after then need to filter product collection with custom attributes and default attributes. We will show you how to get layered navigation data.

Here, in below query we will show you for all attribute code with particular category id. And will get all products attribute data with options label and value.

The following query returns information about filter category_id 14.

Request

saveCopyzoom_out_map
{ products(filter: { category_id: { eq: "14" } }) { total_count aggregations{ attribute_code label count options{ count label value } } } }

Response

saveCopyzoom_out_map
{ "data": { "products": { "total_count": 11, "aggregations": [ { "attribute_code": "price", "label": "Price", "count": 5, "options": [ { "count": 4, "label": "40-50", "value": "40_50" }, { "count": 2, "label": "50-60", "value": "50_60" }, { "count": 3, "label": "60-70", "value": "60_70" }, { "count": 1, "label": "70-80", "value": "70_80" }, { "count": 1, "label": "90-*", "value": "90_*" } ] }, { "attribute_code": "category_id", "label": "Category", "count": 3, "options": [ { "count": 11, "label": "Tops", "value": "12" }, { "count": 11, "label": "Jackets", "value": "14" }, { "count": 2, "label": "Eco Friendly", "value": "36" } ] }, { "attribute_code": "color", "label": "Color", "count": 9, "options": [ { "count": 6, "label": "Black", "value": "5476" }, { "count": 5, "label": "Blue", "value": "5477" }, { "count": 1, "label": "Gray", "value": "5479" }, { "count": 5, "label": "Green", "value": "5480" }, { "count": 4, "label": "Orange", "value": "5483" }, { "count": 2, "label": "Purple", "value": "5484" }, { "count": 6, "label": "Red", "value": "5485" }, { "count": 1, "label": "White", "value": "5486" }, { "count": 3, "label": "Yellow", "value": "5487" } ] }, { "attribute_code": "material", "label": "Material", "count": 10, "options": [ { "count": 1, "label": "Cotton", "value": "5460" }, { "count": 5, "label": "Nylon", "value": "5464" }, { "count": 9, "label": "Polyester", "value": "5465" }, { "count": 2, "label": "Cocona® performance fabric", "value": "5569" }, { "count": 5, "label": "Fleece", "value": "5571" }, { "count": 1, "label": "Hemp", "value": "5572" }, { "count": 2, "label": "LumaTech™", "value": "5574" }, { "count": 1, "label": "Lycra®", "value": "5575" }, { "count": 1, "label": "Spandex", "value": "5577" }, { "count": 1, "label": "Wool", "value": "5585" } ] }, { "attribute_code": "size", "label": "Size", "count": 5, "options": [ { "count": 11, "label": "XS", "value": "5593" }, { "count": 11, "label": "S", "value": "5594" }, { "count": 11, "label": "M", "value": "5595" }, { "count": 11, "label": "L", "value": "5596" }, { "count": 11, "label": "XL", "value": "5597" } ] }, { "attribute_code": "eco_collection", "label": "Eco Collection", "count": 2, "options": [ { "count": 9, "label": "0", "value": "0" }, { "count": 2, "label": "1", "value": "1" } ] }, { "attribute_code": "performance_fabric", "label": "Performance Fabric", "count": 2, "options": [ { "count": 8, "label": "0", "value": "0" }, { "count": 3, "label": "1", "value": "1" } ] }, { "attribute_code": "erin_recommends", "label": "Erin Recommends", "count": 2, "options": [ { "count": 9, "label": "0", "value": "0" }, { "count": 2, "label": "1", "value": "1" } ] }, { "attribute_code": "new", "label": "New", "count": 2, "options": [ { "count": 9, "label": "0", "value": "0" }, { "count": 2, "label": "1", "value": "1" } ] }, { "attribute_code": "sale", "label": "Sale", "count": 2, "options": [ { "count": 9, "label": "0", "value": "0" }, { "count": 2, "label": "1", "value": "1" } ] }, { "attribute_code": "style_general", "label": "Style General", "count": 12, "options": [ { "count": 5, "label": "Insulated", "value": "5543" }, { "count": 1, "label": "Jacket", "value": "5544" }, { "count": 6, "label": "Lightweight", "value": "5546" }, { "count": 3, "label": "Hooded", "value": "5547" }, { "count": 2, "label": "Heavy Duty", "value": "5548" }, { "count": 5, "label": "Rain Coat", "value": "5549" }, { "count": 5, "label": "Hard Shell", "value": "5550" }, { "count": 5, "label": "Soft Shell", "value": "5551" }, { "count": 6, "label": "Windbreaker", "value": "5552" }, { "count": 7, "label": "¼ zip", "value": "5554" }, { "count": 5, "label": "Full Zip", "value": "5555" }, { "count": 1, "label": "Reversible", "value": "5556" } ] }, { "attribute_code": "pattern", "label": "Pattern", "count": 1, "options": [ { "count": 11, "label": "Solid", "value": "5623" } ] }, { "attribute_code": "climate", "label": "Climate", "count": 10, "options": [ { "count": 5, "label": "All-Weather", "value": "5628" }, { "count": 2, "label": "Cold", "value": "5629" }, { "count": 9, "label": "Cool", "value": "5630" }, { "count": 2, "label": "Indoor", "value": "5631" }, { "count": 4, "label": "Mild", "value": "5632" }, { "count": 5, "label": "Rainy", "value": "5633" }, { "count": 10, "label": "Spring", "value": "5634" }, { "count": 1, "label": "Warm", "value": "5635" }, { "count": 9, "label": "Windy", "value": "5636" }, { "count": 3, "label": "Wintry", "value": "5637" } ] } ] } } }

Now, we will show you in next query how to filter multiple attribute with category id. As per our above discussion first need to products query.

In below products query used category id as a string, color as a string and price as a range (from-to) in filter. You can use array instead of string if you need.

Request

saveCopyzoom_out_map
{ products(filter: { category_id: { in: "12" }, color: { eq: "5480" }, price: {from: "40" to: "59"} }) { total_count aggregations { count attribute_code label options { label value } } items { id sku name } } }

Response

saveCopyzoom_out_map
{ "data": { "products": { "total_count": 5, "aggregations": [ { "count": 2, "attribute_code": "price", "label": "Price", "options": [ { "label": "40-50", "value": "40_50" }, { "label": "50-*", "value": "50_*" } ] }, { "count": 4, "attribute_code": "category_id", "label": "Category", "options": [ { "label": "Tops", "value": "12" }, { "label": "Jackets", "value": "14" }, { "label": "Hoodies & Sweatshirts", "value": "15" }, { "label": "Eco Friendly", "value": "36" } ] }, { "count": 8, "attribute_code": "color", "label": "Color", "options": [ { "label": "Black", "value": "5476" }, { "label": "Blue", "value": "5477" }, { "label": "Gray", "value": "5479" }, { "label": "Green", "value": "5480" }, { "label": "Orange", "value": "5483" }, { "label": "Purple", "value": "5484" }, { "label": "Red", "value": "5485" }, { "label": "White", "value": "5486" } ] }, { "count": 6, "attribute_code": "material", "label": "Material", "options": [ { "label": "Nylon", "value": "5464" }, { "label": "Polyester", "value": "5465" }, { "label": "Fleece", "value": "5571" }, { "label": "Hemp", "value": "5572" }, { "label": "LumaTech™", "value": "5574" }, { "label": "Wool", "value": "5585" } ] }, { "count": 5, "attribute_code": "size", "label": "Size", "options": [ { "label": "XS", "value": "5593" }, { "label": "S", "value": "5594" }, { "label": "M", "value": "5595" }, { "label": "L", "value": "5596" }, { "label": "XL", "value": "5597" } ] }, { "count": 2, "attribute_code": "eco_collection", "label": "Eco Collection", "options": [ { "label": "0", "value": "0" }, { "label": "1", "value": "1" } ] }, { "count": 2, "attribute_code": "performance_fabric", "label": "Performance Fabric", "options": [ { "label": "0", "value": "0" }, { "label": "1", "value": "1" } ] }, { "count": 2, "attribute_code": "erin_recommends", "label": "Erin Recommends", "options": [ { "label": "0", "value": "0" }, { "label": "1", "value": "1" } ] }, { "count": 2, "attribute_code": "new", "label": "New", "options": [ { "label": "0", "value": "0" }, { "label": "1", "value": "1" } ] }, { "count": 1, "attribute_code": "sale", "label": "Sale", "options": [ { "label": "0", "value": "0" } ] }, { "count": 9, "attribute_code": "style_general", "label": "Style General", "options": [ { "label": "Insulated", "value": "5543" }, { "label": "Lightweight", "value": "5546" }, { "label": "Hooded", "value": "5547" }, { "label": "Rain Coat", "value": "5549" }, { "label": "Hard Shell", "value": "5550" }, { "label": "Soft Shell", "value": "5551" }, { "label": "Windbreaker", "value": "5552" }, { "label": "¼ zip", "value": "5554" }, { "label": "Full Zip", "value": "5555" } ] }, { "count": 2, "attribute_code": "pattern", "label": "Pattern", "options": [ { "label": "Color-Blocked", "value": "5621" }, { "label": "Solid", "value": "5623" } ] }, { "count": 8, "attribute_code": "climate", "label": "Climate", "options": [ { "label": "All-Weather", "value": "5628" }, { "label": "Cool", "value": "5630" }, { "label": "Indoor", "value": "5631" }, { "label": "Mild", "value": "5632" }, { "label": "Rainy", "value": "5633" }, { "label": "Spring", "value": "5634" }, { "label": "Warm", "value": "5635" }, { "label": "Windy", "value": "5636" } ] } ], "items": [ { "id": 132, "sku": "MH05", "name": "Hollister Backyard Sweatshirt" }, { "id": 164, "sku": "MH07", "name": "Hero Hoodie" }, { "id": 292, "sku": "MJ02", "name": "Hyperion Elements Jacket" }, { "id": 404, "sku": "MJ06", "name": "Jupiter All-Weather Trainer " }, { "id": 420, "sku": "MJ03", "name": "Montana Wind Jacket" } ] } } }

That's it!!

If you are looking for more GraphQL solutions then check out our another article which is List of GraphQL Queries and Mutations for Magento 2.

I hope this article helps you to find what you were looking for.

Bookmark it for your future reference. Do comment below if you have any other questions on that.

P.S. Do share this article with your team.




Recent Articles
Tags
Newsletter
Chrome Extension
Copyright © 2024 devhooks.in All rights reserved.
Ads OFF toggle_off
wifi_off