2

In few words - problem is same as in this question https://stackoverflow.com/questions/16718129/magento-layered-navigation-configurable-products-multiple-filters-active-iss

We have products (configutable / grouped / bundle), that have there linked simple products. That linked products have own attributes, and configurable have its own.

Layered Navigation gets all availiable options for linked products and add them into parent product, so when we getting different combinations of filters, we can set options for non existing simple products

Example:

SKU | Type    | Country | City           | Linked Skus
--------------------------------------------------------
SP1 | Simple  | USA     | NY             | -
SP2 | Simple  | USA     | LA             | -
SP3 | Simple  | Russia  | Moscow         | -
SP4 | Simple  | Russia  | St. Pitersburg | -
GP1 | Grouped | -       | -              | SP1, SP2
GP2 | Grouped | -       | -              | SP1, SP3, SP4

In that way we can check in filters Country = USA AND City = Moscow and magento will show us product GP2 as availiable for this combination of filters.

The reason of that is that in index table catalog_product_index_eav it would have something like:

SKU | Attribute | Value
--------------------------------
GP1 | Country   | USA
GP1 | City      | NY
GP1 | City      | LA
GP2 | Country   | USA
GP2 | Country   | Russia
GP2 | City      | NY
GP2 | City      | Moscow
GP2 | City      | St. Pitersburg

So for this selection USA + Moscow it would show result product GP2 because it have linked simples, that have values in attributes for USA and Moscow, but really not one simple have selected USA + Moscow at same time, so showing GP2 for such filters is mistake

Is there any extentions / ideas how to solve this?

Only one idea that comes to me is to add into catalog_product_index_eav additional column linked_id and for simples put into it zero value or simple entity_id value, but for grouped / configurable etc. generate index based for every linked simple + parent attribute values.

On this example it would look like:

SKU | Attribute | Linked Sku | Value
----------------------------------------
GP1 | Country   | SP1        | USA
GP1 | Country   | SP2        | USA
GP1 | City      | SP1        | NY
GP1 | City      | SP2        | LA
GP2 | Country   | SP1        | USA
GP2 | Country   | SP3        | Russia
GP2 | Country   | SP4        | Russia
GP2 | City      | SP1        | NY
GP2 | City      | SP3        | Moscow
GP2 | City      | SP4        | St. Pitersburg

So here we can add additional condition that all attributes in row must have same Linked Sku

May be someone knows ready solutions for this or have any additional ideas? Maybe wanna to discuss this?

Every ideas / solutions / opinions are welcome :)

  • I don't have a solution, but the problem is, that every attribute is indexed independant from the other. When you have products with linked child products all attributes are indexed, regardless whether the simple products are activated or not. – Fabian Blechschmidt Mar 27 '14 at 9:40
  • Really I don't know if they index not looking on activated or not childs, but thats not a problem for solution I have proposed. If we add additional column linked_id - than we have all availiable combinations for seoparate simples in parent, so then we can additionally filter collection of simples by status (enabled / disabled) and stock status - so I think it's not a problem – Sergey Mar 27 '14 at 10:23
1

Looks like it works in the way I described. Just developed an extension that is doing this. Now we are testing it, but we will test only on grouped products, because we are not using other types. Really it looks like it must work not only with grouped products.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.