Question

Eh bien, Je vais avoir une catégorie remplie uniquement avec des produits groupés et je veux ceux-ci à filtrer par leurs associés (et simples) les attributs de produits.

Jusqu'à présent, je l'ai utilisé une solution de sale: J'ai laissé un seul produit simple pour être visible au catalogue, mais caché par html et css.
De cette façon, les attributs apparaissaient et je pouvais les utiliser pour les produits regroupés aussi, mais je l'ai remarqué que dissapears de navigation en couches si ce produit simple caché n'est pas quand je filtre apparaissent par prix.

Toutes les idées ou solutions de contournement?

Merci.

Était-ce utile?

La solution

Vous avez besoin de réécrire la façon dont Mage_Catalog_Model_Layer construit la collection d'attributs à l'aide des ensembles d'attributs de la collection de produit actuel:

protected function _getSetIds()
{
    $key = $this->getStateKey().'_SET_IDS';
    $setIds = $this->getAggregator()->getCacheData($key);

    if ($setIds === null) {
        $setIds = $this->getProductCollection()->getSetIds();
        $this->getAggregator()->saveCacheData($setIds, $key, $this->getStateTags());
    }

    return $setIds;
}

Pour ce contexte, vous voulez vérifier la collection de produits pour les produits groupés et retourner les ID de jeu d'attributs d'enfants regroupés. Ceux-ci sont ensuite évalués en getFilterableAttributes():

public function getFilterableAttributes()
{
    $setIds = $this->_getSetIds();
    if (!$setIds) {
        return array();
    }
    /** @var $collection Mage_Catalog_Model_Resource_Product_Attribute_Collection */
    $collection = Mage::getResourceModel('catalog/product_attribute_collection');
    $collection
        ->setItemObjectClass('catalog/resource_eav_attribute')
        ->setAttributeSetFilter($setIds)
        ->addStoreLabel(Mage::app()->getStore()->getId())
        ->setOrder('position', 'ASC');
    $collection = $this->_prepareAttributeCollection($collection);
    $collection->load();

    return $collection;
}

Vous devrez probablement faire face à la clé de cache. Je développais avec la mise en cache de bloc hors tension, puis vérifier de façon approfondie avec le.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top