Catégorie spécifique Layered Navigation changements (désactivation filtres d'attributs) [fermé]

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

  •  16-10-2019
  •  | 
  •  

Question

Je suis en train de désactiver un filtre d'attribut particulier dans la navigation en couches pour une catégorie spécifique. Le filtre d'attribut Je souhaite désactiver est le fabricant dans ce cas.

Je suis en train ce qui suit dans le « Custom Design Mise en page » pour la catégorie en question: -

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

Cela fonctionne la moitié, il cache le filtre du fabricant dans la navigation en couches, mais elle cache aussi tout le reste en dessous de ce à catalog.leftnav.

Toute idée de comment les besoins ci-dessus modification pour empêcher que cela se produise?

Pour expliquer ce que je veux dire, voici des captures d'écran.

Avant la mise à jour XML

entrer image description ici

Une fois la mise à jour XML

entrer image description ici

Était-ce utile?

La solution

Vous pouvez y parvenir si vous réécrivez la méthode Mage_Catalog_Model_Layer::getFilterableAttributes.
Pour une catégorie spécifique, vous pouvez ajouter un nouveau filtre.

Quelque chose comme ça (non testé)

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;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top