Pregunta

Bueno, Estoy teniendo una categoría llena sólo con productos agrupados y quiero éstos a ser filtrados por sus simples (y) los atributos de los productos asociados.

Hasta ahora he utilizado una solución sucia: he dejado sólo un simple producto para que sea visible para catalogar, pero oculto por HTML y CSS.
De esa manera los atributos fueron apareciendo y podía utilizarlas para los productos agrupados también, pero me he dado cuenta de que desaparece la navegación por capas si ese producto simple oculta no aparece cuando puedo filtrar por precio.

Todas las ideas o soluciones?

Gracias.

¿Fue útil?

Solución

Es necesario volver a escribir cómo Mage_Catalog_Model_Layer construye la colección de atributos utilizando conjuntos de atributos de la colección actual de productos:

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;
}

En este contexto, tendrá que comprobar la colección de productos para productos agrupados y devolver los identificadores de conjuntos de atributos de los niños agrupados. Estos se evaluaron a continuación 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;
}

Es probable que tenga que hacer frente a la clave de caché. Iba a desarrollar con el bloque de almacenamiento en caché y vuelva a probar extensivamente con él puesto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top