Domanda

Come potrei fare su come modificare la navigazione a strati a un solo sguardo attributi del prodotto configurabile genitore, e non il bambino?

Bambino e genitore prodotti hanno entrambi il set di attributi ed è utilizzato in altri luoghi. Ad esempio, i prodotti hanno tutti un colore, tra cui il genitore. Il colore del genitore non è sempre lo stesso come il bambino di, ma è indicativo del colore predefinito. Quando abbiamo filtro a un colore specifico vogliamo solo mostrare gli elementi in cui il genitore è impostato su quel colore predefinito. prodotti configurabili sono visibili e semplici prodotti (bambino) sono nascosti. Ci sono alcuni singoli prodotti semplici che non sono i bambini e sono visibili, che deve anche rimanere funzionale.

È stato utile?

Soluzione

Con l'avvertenza che i cambiamenti di navigazione a strati sono sempre più complicate di quello che sembrano, la collezione di prodotti per la navigazione a strati viene creata un'istanza in

#File: app/code/core/Mage/Catalog/Model/Layer.php
public function getProductCollection()
{
    if (isset($this->_productCollections[$this->getCurrentCategory()->getId()])) {
        $collection = $this->_productCollections[$this->getCurrentCategory()->getId()];
    } else {
        $collection = $this->getCurrentCategory()->getProductCollection();
        $this->prepareProductCollection($collection);
        $this->_productCollections[$this->getCurrentCategory()->getId()] = $collection;
    }
    return $collection;
}

E 'anche i suoi filtri predefiniti aggiunto

#File: app/code/core/Mage/Catalog/Model/Layer.php
public function prepareProductCollection($collection)
{
    $collection
        ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
        ->addMinimalPrice()
        ->addFinalPrice()
        ->addTaxPercents()
        ->addUrlRewrite($this->getCurrentCategory()->getId());

    Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
    Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);

    return $this;
}

E un getFilterableAttributes intrigante di nome

#File: app/code/core/Mage/Catalog/Model/Layer.php
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;
}

Una riscrittura di uno qualsiasi di questi metodi sarebbe un buon punto di partenza (l'aggiunta di un filtro type=configurable, limitando gli attributi filtrabili, ecc.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top