Categoría Cambios de navegación en capas específicos (deshabilitar filtros de atributos) [cerrado

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

  •  16-10-2019
  •  | 
  •  

Pregunta

Estoy tratando de deshabilitar un filtro de atributos particular en la navegación en capas para una categoría específica. El filtro de atributos que deseo deshabilitar es el fabricante en este caso.

Estoy probando lo siguiente en el 'diseño de diseño personalizado' para la categoría en cuestión:-

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

Esto es medio funcionando, oculta el filtro del fabricante en la navegación en capas, pero también oculta todo lo demás debajo de esto en catalog.leftnav.

¿Alguna idea de cómo lo anterior necesita modificarse para evitar que eso suceda?

Para explicar lo que quiero decir, aquí hay capturas de pantalla.

Antes de la actualización XML

enter image description here

Después de la actualización XML

enter image description here

¿Fue útil?

Solución

Puedes lograr esto si reescribes el Mage_Catalog_Model_Layer::getFilterableAttributes método.
Para una categoría específica, puede agregar un nuevo filtro.

Algo como esto (no probado)

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;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top