Категория Специфические слоистые изменения навигации (отключение фильтров атрибутов) [закрыто

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

  •  16-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь отключить конкретный фильтр атрибутов в слоистой навигации для конкретной категории. Фильтр атрибутов, который я хочу отключить, является производителем в этом случае.

Я пробую следующее в «индивидуальном макете дизайна» для рассматриваемой категории:-

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

Это наполовину работает, он скрывает фильтр производителя в слоистой навигации, но также скрывает все остальное ниже этого в catalog.leftnav.

Есть идеи, как необходимо изменять вышеупомянутое, чтобы это не произошло?

Чтобы объяснить, что я имею в виду, вот скриншоты.

Перед обновлением XML

enter image description here

После обновления XML

enter image description here

Это было полезно?

Решение

Вы можете достичь этого, если переписать Mage_Catalog_Model_Layer::getFilterableAttributes метод
Для конкретной категории вы можете добавить новый фильтр.

Что -то подобное (не проверено)

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;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top