Frage

Nun, ich habe eine Kategorie, die nur mit gruppierten Produkten gefüllt ist, und ich möchte, dass diese von den Attributen ihrer zugehörigen (und einfachen) Produkte gefiltert werden.

Bis jetzt habe ich eine schmutzige Problemumgehung verwendet: Ich habe nur ein einfaches Produkt zu katalogisieren gelassen, aber von HTML & CSS versteckt.
Auf diese Weise wurden die Attribute erschienen und ich konnte sie auch für die gruppierten Produkte verwenden, aber ich habe festgestellt, dass geschichtete Navigation dissapears, wenn dieses versteckte einfache Produkt nicht erscheint, wenn ich nach dem Preis filtere.

Irgendwelche Ideen oder Problemumgehungen?

Vielen Dank.

War es hilfreich?

Lösung

Sie müssen umschreiben, wie Mage_Catalog_Model_Layer Erstellt die Attributsammlung mithilfe der Attributsätze der aktuellen Produktsammlung:

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

In diesem Zusammenhang möchten Sie die Produktsammlung für gruppierte Produkte überprüfen und die Attribut -IDs von gruppierten Kindern zurückgeben. Diese werden dann in bewertet 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;
}

Sie müssen sich wahrscheinlich mit der Cache -Taste befassen. Ich würde mich mit dem Abschnitt des Blocks entwickeln und dann ausgiebig damit testen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top