Question

I've set up two products with an attribute "ColorScheme". It's multiselect so that I can set one or several colors in the ColorScheme field.

Now, if I set one product to Red, Green and the other to Blue, in the front end Layered Navigation under ColorScheme I get, as expected, Red, Green and Blue, each showing (1) hit. (Two of these obviously select the same product.)

But if I set the two products to have overlapping lists, Nav seems to break. If I set one product to Red, Green and the other Red, Blue, then in Layered Nav I get Green (1) and Blue (1), but not the Red (2) item I expected.

Is there a setting somewhere I have set wrong?

(I have flushed pages, and reindexed, and tried multiple different attributes and combinations, and this behavior is consistent.)

Was it helpful?

Solution

Well, turns out this behavior is a feature, not a bug.

In the multiselect attribute's Storefront Properties is a setting "Use in Layered Navigation". Two two choices cause the attribute to be used in layered navigation. These are:

  • Filterable (with results)
  • Filterable (no results)

Evidently, selecting "with results", means that in Navigation this attribute's filter only shows attribute values which, if selected as a filter, would change the list of products shown. So Magento hides that value if there are zero items having that value. But Magento also hides that value if all the currently shown products have that value.

So that may make it easier for the user to choose filter values which will definitely whittle down the list. However it hides from the user the attribute values that the shown items have, suggesting that the filtered items lack those attribute values.

In the example I gave in the question statement, the user would think that the two products have only Blue or Green color schemes, and be unaware that these are Red-Green and Red-Blue schemes.

At any rate, the "Filterable (no results)" option will result in the corresponding Layered Nav filter showing all allowed values and their product counts, whether the value corresponds to zero, some, or all currently shown items.

I have not discovered a happy medium setting where Magento would hide filter values with zero hits, but show all other values.

OTHER TIPS

Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange
scroll top