Kategoriespezifische Schichtnavigationsänderungen (Deaktivierungsattributfilter) [geschlossen

magento.stackexchange https://magento.stackexchange.com/questions/11567

  •  16-10-2019
  •  | 
  •  

Frage

Ich versuche, einen bestimmten Attributfilter in der geschichteten Navigation für eine bestimmte Kategorie zu deaktivieren. Der Attributfilter, den ich deaktivieren möchte, ist der Hersteller in diesem Fall.

Ich probiere das Folgende im 'benutzerdefessionellen Design-Layout' für die betreffende Kategorie aus:-

<block type="catalog/layer_view" name="catalog.leftnav" after="currency" template="catalog/layer/view.phtml">
    <action method="unsetChild"><alias>manufacturer_filter</alias></action>
</block>

Dies arbeitet halb, verbirgt den Herstellerfilter in der geschichteten Navigation, aber es verbirgt auch alles andere unten in catalog.leftnav.

Gibt es eine Idee, wie die oben genannten geändert werden müssen, um zu verhindern, dass dies stattfindet?

Um zu erklären, was ich meine, hier sind Screenshots.

Vor dem XML -Update

enter image description here

Nach dem XML -Update

enter image description here

War es hilfreich?

Lösung

Sie können dies erreichen, wenn Sie die neu schreiben Mage_Catalog_Model_Layer::getFilterableAttributes Methode.
Für eine bestimmte Kategorie können Sie einen neuen Filter hinzufügen.

So etwas (nicht getestet)

public function getFilterableAttributes()
{
    $setIds = $this->_getSetIds();
    if (!$setIds) {
        return array();
    }
    $collection = Mage::getResourceModel('catalog/product_attribute_collection');
    $collection
        ->setItemObjectClass('catalog/resource_eav_attribute')
        ->setAttributeSetFilter($setIds)
        ->addStoreLabel(Mage::app()->getStore()->getId())
        ->setOrder('position', 'ASC');
    if ($this->getCurrentCategory()->getId() == 7) {
         //if in that specific category...You can even make this a category setting or a config setting so you won't hard code it.  
         $collection->addFieldToFilter('attribute_code', array('neq'=>'manufacturer'));
    }

    $collection = $this->_prepareAttributeCollection($collection);
    $collection->load();

    return $collection;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top