Kategoriespezifische Schichtnavigationsänderungen (Deaktivierungsattributfilter) [geschlossen
-
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
Nach dem XML -Update
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;
}