Categoría Cambios de navegación en capas específicos (deshabilitar filtros de atributos) [cerrado
-
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
Después de la actualización XML
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;
}